README
Slim Node MySQL
MySQL database class to abstract pooling and prepared statements.
Table of Contents
Installation
To install the package from npm run:
npm install slim-node-mysql
Download
Download the latest Slim Node MySQL package.
Example Setup
It is recommended that a single SlimNodeMySQL
instance is used throughout your app so it can effectively manage pooling.
const { SlimNodeMySQL } = require('slim-node-mysql');
// create new database instance with the MySQL connection string
const database = new SlimNodeMySQL(env.database);
Usage
If non-SELECT
queries are executed, the QueryResult.data
value will be of mysql
type OkPacket
containing the following properties:
interface OkPacket {
fieldCount: number;
affectedRows: number;
changedRows: number;
insertId: number;
serverStatus: number;
warningCount: number;
message: string;
procotol41: boolean;
}
Methods
query
// returns an array of rows found or an empty array if nothing is found
const data: QueryResult<User> = await database.query<User>(
`
SELECT
*
FROM
User
WHERE
id = @id
`,
{
id: 1,
}
);
The returned array contains a property _fields
that is an array of objects representing the columns of the result set.
getOne
// returns an object with data from the matched row or null if no match was found
const { data, fields }: QueryResult<User> = await database.getOne<User>(
`
SELECT
*
FROM
User
WHERE
id = @id
`,
{
id: 1,
}
);
The object contains a property _fields
that is an array of objects representing the columns of the result set.
getValue
// returns value from column specified (generics are optional)
const username: string = database.getValue<User, 'username'>(
'username',
`
SELECT
*
FROM
User
WHERE
id = @id
`,
{
id: 1,
}
);
exists
// returns a boolean value depending on if any rows are returned or not
const exists: boolean = await database.exists<User>(
`
SELECT *
FROM User
WHERE id = @id
`,
{
id: 1,
}
);
console.log(userExists); // true