NodeJS mysql2蓝鸟?

一直在testingMySQL vs mysql2,似乎2已经做了一些改进,但它不是一个确切的下降替代。 在同一时间Q是一个好的图书馆,似乎更容易整合,但蓝鸟似乎采取更less的内存和运行更快,所以…

我目前的mysql-bluebird连接器如下所示,并且允许直接使用query('SELECT email FROM users.users WHERE id=?',id).then(function(res){var email=res[0][0];});

 /* global module, require */ var conf=require('./conf.js').conf; var mysql = require('mysql'); var Promise = require('bluebird'); var using = Promise.using; Promise.promisifyAll(require('mysql/lib/Connection').prototype); Promise.promisifyAll(require('mysql/lib/Pool').prototype); var pool = mysql.createPool(conf.mysql); var getConnection = function () { return pool.getConnectionAsync().disposer(function (connection) { return connection.release(); }); }; var query = function (command) { return using(getConnection(), function (connection) { return connection.queryAsync(command); }); }; function queryWrapper(q,a){ if(a){ return query(mysql.format(q,a)); } else{ return query(mysql.format(q)); } } module.exports = { query: queryWrapper }; 

到目前为止,我用mysql2做这个尝试还没有被淘汰。

有没有人有任何见解如何转换? 谢谢,Jegsar

你可以使用mysql2-promise 。 这是一个简单的包装,使用q,promisifies mysql2。 如果你想使用蓝鸟,你可以看看这个包装是如何创build的,并自己做。

node-mysql2现在有内置的Promise API ,您可以select要使用的承诺实现

 var mysql = require('mysql2/promise'); mysql.createConnection({ Promise: require('bluebird'), // if not set, global Promise is used user: 'foo', password: 'bar', database: 'baz' }) .then((conn) => conn.query('select 1+1 as test')) .then(([rows, fields]) => console.log(rows[0]))