slim-node-mysql

MySQL database class to abstract pooling and prepared statements.

Usage no npm install needed!

<script type="module">
  import slimNodeMysql from 'https://cdn.skypack.dev/slim-node-mysql';
</script>

README

Slim Node MySQL

MySQL database class to abstract pooling and prepared statements.

Build Status Another

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