Node/MySQL2/bluebird 承诺无效
Node/MySQL2/bluebird promises not working
我有以下代码:
var Promise = require('bluebird');
var mysql = require('mysql2/promise');
var pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'root',
database: 'crux'
});
Database.prototype.listProjects = function () {
return getConnection()
.then(function (connection) {
return connection.query('SELECT * FROM project');
})
};
function getConnection() {
return pool.getConnection().disposer(function (connection, promise) {
connection.release();
});
}
但是当我 运行 这个时,我得到这个错误:
TypeError: pool.getConnection(...).disposer is not a function
at getConnection (...
at Database.listProjects(...
....
我一直在尝试遵循 MySQL2 github 站点上的示例代码。但我不明白为什么这不起作用。据我所知,pool.getConnection()
似乎正在返回一个承诺。
有人写过这样的代码吗?
谢谢大家。我现在已经切换到 Knex API,它解决了我遇到的所有问题。
如果您更喜欢 bluebird 版本的 promises,您可以将其作为参数传递给 mysql2:
var Promise = require('bluebird');
var mysql = require('mysql2/promise');
var pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'root',
database: 'crux',
Promise: Promise
});
见https://github.com/sidorares/node-mysql2/blob/c487f542f7f4416f9759319225197c383b4937fb/promise.js#L5
默认使用全局 Promise,但只做 var Promise = require('bluebird');
并不能使其成为全局。
我有以下代码:
var Promise = require('bluebird');
var mysql = require('mysql2/promise');
var pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'root',
database: 'crux'
});
Database.prototype.listProjects = function () {
return getConnection()
.then(function (connection) {
return connection.query('SELECT * FROM project');
})
};
function getConnection() {
return pool.getConnection().disposer(function (connection, promise) {
connection.release();
});
}
但是当我 运行 这个时,我得到这个错误:
TypeError: pool.getConnection(...).disposer is not a function
at getConnection (...
at Database.listProjects(...
....
我一直在尝试遵循 MySQL2 github 站点上的示例代码。但我不明白为什么这不起作用。据我所知,pool.getConnection()
似乎正在返回一个承诺。
有人写过这样的代码吗?
谢谢大家。我现在已经切换到 Knex API,它解决了我遇到的所有问题。
如果您更喜欢 bluebird 版本的 promises,您可以将其作为参数传递给 mysql2:
var Promise = require('bluebird');
var mysql = require('mysql2/promise');
var pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'root',
database: 'crux',
Promise: Promise
});
见https://github.com/sidorares/node-mysql2/blob/c487f542f7f4416f9759319225197c383b4937fb/promise.js#L5
默认使用全局 Promise,但只做 var Promise = require('bluebird');
并不能使其成为全局。