npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

promise-mysql2

v1.0.0

Published

A promise wrapper for node-mysql

Downloads

4,375

Readme

Promise-mysql2

Build Status

Promise-mysql2 is a wrapper for mysqljs/mysql that wraps function calls with promises.

node >= 8.0

To install promise-mysql, use npm:

$ npm install promise-mysql2

Please refer to mysqljs/mysql for documentation on how to use the mysql functions.

At the minute only the standard connection (using .createConnection()) and the pool (using .createPool()) is supported. createPoolCluster is not implemented yet.

Examples

Connection

Important note: don't forget to call connection.end() when you're finished otherwise the Node process won't finish

To connect, you simply call .createConnection() like you would on mysqljs/mysql:

const mysql = require('promise-mysql2');

mysql.createConnection({
	host: 'localhost',
	user: 'dashaibi',
	password: 'dashaibi',
	database: 'dashaibi'
}).then((conn) => {
    // do stuff with conn
    conn.end();
});

To use the promise, you call the methods as you would if you were just using mysqljs/mysql, minus the callback. You then add a .then() with your function in:

const mysql = require('promise-mysql2');

mysql.createConnection({
	host: 'localhost',
	user: 'dashaibi',
	password: 'dashaibi',
	database: 'dashaibi'
}).then((conn) => {
	let result = conn.query('select `name` from user');
	conn.end();
	return result;
}).then(([rows, fields]) => {
	// list of user
	console.log(rows);
});

You can even chain the promises, using a return within the .then():

const mysql = require('promise-mysql2');
let connection;

mysql.createConnection({
	host: 'localhost',
	user: 'dashaibi',
	password: 'dashaibi',
	database: 'dashaibi'
}).then((conn) => {
	connection = conn;
	return connection.query('select `id` from user where `name`="dashabi"');
}).then(([rows, fields]) => {
	// Query the items that dashabi owns.
	let result = connection.query('select * from items where `owner`="' + rows[0].id + '" and `name`="dashabi"');
	connection.end();
	return result;
}).then(([rows, fields]) => {
	// Logs out that dashabi owns
	console.log(rows);
});

You can catch errors using the .catch() method. You can still add .then() clauses, they'll just get skipped if there's an error

const mysql = require('promise-mysql2');
let connection;

mysql.createConnection({
	host: 'localhost',
	user: 'dashaibi',
	password: 'dashaibi',
	database: 'dashaibi'
}).then((conn) => {
	connection = conn;
	return connection.query('select * from tablethatdoesnotexist');
}).then(() => {
	let result = connection.query('select * from user');
	connection.end();
	return result;
}).catch((error) => {
	if (connection && connection.end) connection.end();
	//logs out the error
	console.log(error);
});

To use the async/await, you call the methods as you would if you were just using mysqljs/mysql.

const mysql = require('promise-mysql2');
let connection = await mysql.createConnection({
	host: 'localhost',
	user: 'dashaibi',
	password: 'dashaibi',
	database: 'dashaibi'
});
const [rows, fields] = await connection.query('select `id` from user where `name`="dashabi"');
connection.end();
console.log(rows);

Pool

Use pool directly:

pool = mysql.createPool({
	host: 'localhost',
	user: 'dashaibi',
	password: 'dashaibi',
	database: 'dashaibi'
  connectionLimit: 10
});

pool.query('select `name` from user').then(([rows, fields]){
    // Logs out a list of user
    console.log(rows);
});

Get a connection from the pool:

let conn;
pool.getConnection().then((connection) => {
	conn = connection;
	conn.query('select `name` from user').then(...);
	conn.release();
}).catch((err) => {
	conn.release();
	done(err);
});

To use the async/await, you call the methods as you would if you were just using mysqljs/mysql.

const pool = mysql.createPool({
	host: 'localhost',
	user: 'dashaibi',
	password: 'dashaibi',
	database: 'dashaibi'
  connectionLimit: 10
});

const [rows, fields] = await pool.query('select `name` from user');
console.log(rows);

// get connection from pool
const conn = await pool.getConnection();
const [rows, fields] = await connection.query('select `name` from user');
conn.release();
console.log(rows);

Tests

At the moment only simple basics tests are implemented using Mocha. To run the tests, you need to connect to a running MySQL server. A database or write permissions are not required.

Start the test suite with

DB_HOST=localhost DB_USER=user DB_PWD=pwd npm test