一直在测试mysql vs mysql2,似乎2已经做了一些改进,但它不是一个确切的替代品。同时Q是一个很好的库,它似乎更容易集成,但是蓝鸟似乎占用更少的内存并且运行速度更快......
我当前的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
答案 0 :(得分:1)
您可以使用mysql2-promise。它是一个简单的包装器,使用q,它可以实现mysql2。如果你更愿意使用Bluebird,你可以看看这个包装器是如何创建的并自己完成。
答案 1 :(得分:0)
node-mysql2现在有Promise api built in,您可以选择要使用的承诺实现
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]))