1.0.2 • Published 5 years ago

mysql21 v1.0.2

Weekly downloads
4
License
ISC
Repository
github
Last release
5 years ago

Node MySQL 2.1

Lightweight, mysql2/promise based layer for easier database manipulation.

Inspired by PHP's awesome dg/digi.

Method changes over mysql2


Code examples

Installation

npm -i mysql21
// TypeScript
import { mysql21 } from 'mysql21';

// Node.js
const { mysql21 } = require("mysql21");

Connection

const opts = {
  host: 'localhost',
  user: 'test',
  password: 'test',
  database: 'test',
  multipleStatements: true
}

// single line

let connection = await mysql21.createConnection(opts);

// pool

let connection = await mysql21.createPool(opts);

Query

// either await

let query = await connection.query('SELECT 1');
console.log(query);
> [ TextRow { '1': 1 } ]

// or then...

connection.query('SELECT 1')
  .then(console.log);
> [ TextRow { '1': 1 } ]

connection.query('INSERT INTO listings (data) VALUES ?', [[[JSON.stringify({title: 'test'})]]])
  .then(console.log);
> 4

Execute

connection.execute('SELECT ?', ['execute'])
  .then(console.log);
> execute

Single result

connection.single('SELECT 1')
  .then(console.log);
> 1

Associative results

connection.assoc('id', "SELECT 1 as id, 'one' as value UNION SELECT 2, 'two'")
      .then(console.log);
> {
>   '1': TextRow { id: 1, value: 'one' },
>   '2': TextRow { id: 2, value: 'two' }
> }

Key-Value Pairs

connection.pairs('id', 'value', "SELECT 1 as id, 'one' as value UNION SELECT 2, 'two'")
      .then(console.log);
> { '1': 'one', '2': 'two' }

API

Methods not described above follow their mysql2 origin within it's promise wrapper.

Notice: query() and execute() drop field definitions from result for cleaner result parsing.

If you want them back, use defQuery() or defExecute() instead, triggering mysql2's original methods, which return [result, fields].

Error Handling

Simply catch the Errors as thrown by mysql2.

They now have sql property of formatted string for a chance of better debugging :-)

Acknowledgements

  • Original @sidorares mysql2 library
  • Awesome @dg dibi PHP library, I've been using for years