node.js - Node/MySQL2/bluebird promise 不工作

标签 node.js bluebird mysql2

我有以下代码:

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() 似乎正在返回一个 promise 。

有人写过这样的代码吗?

最佳答案

如果您更喜欢 bluebird 版本的 Promise,您可以将其作为参数传递给 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'); 不会使其成为全局的。

关于node.js - Node/MySQL2/bluebird promise 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38090458/

相关文章:

javascript - 使用 JQuery 处理帖子数据的正确方法

javascript - 将 NodeJS Promise 与 MySQL 结合使用

ruby-on-rails - rails mysql2 : how to verify mysql server's SSL certificate?

ruby-on-rails-3.1 - 带有 mysql2 适配器的 Rails Rubber gem - 由于用户错误而拒绝访问

javascript - AJAX 未将图像上传到后端服务

node.js - Node js - 如何依次执行两个Windows命令并获取输出

javascript - 在 Material-UI TableCell 中格式化日期字符串

javascript - 稍后在链中使用 Promise 的响应

javascript - 在数组中将 BlueBird promise 同步链接在一起

mysql - Rails 和 Mysql2 拒绝用户 'root' @'localhost' 访问(使用密码 : NO)