mysql21
v1.0.2
Published
MySQL 2.1
Downloads
11
Readme
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 :-)