mysql - 努力使用promise-mysql和bluebird从mysql取回数据

标签 mysql node.js promise bluebird

我正在尝试使用快速请求中的数据来访问 mysql 数据库以用作响应。但我正在努力使用 promise 取回数据。

表达位

app.get('/loadDrinks', function(req, res) {
    var q = 'SELECT * FROM `Drinks` WHERE `Name` LIKE "%' + req.query.drinks + '%"';
    mysqlQ(q).then(function() {
        console.log(data);
        res.send(" ");
    })
})

我使用promise-mysql和bluebird来处理promise的mysql位

function mysqlQ(q) {
    mysql.createConnection({
        host: 'localhost',
        user: 'correctUser',
        password: 'correctPass',
        database: 'correctDB'
    }).then(function(conn) {
        connection = conn;
        var f = connection.query(q);
        //connection.end()
        return f
    }).then(function (rows) {
      return rows;
    })
}

我收到错误:

TypeError: Cannot read property 'then' of undefined 

上线 67:14 这是

 mysqlQ(q).then(function() {

但是mysqlQ应该返回Rows的值

最佳答案

您的端点定义缺少 data里面的参数then

app.get('/loadDrinks', function(req, res) {
    var q = 'SELECT * FROM `Drinks` WHERE `Name` LIKE "%' + req.query.drinks + '%"';

    // here you had function() - without data parameter which you try to log further
    mysqlQ(q).then(function(data) {
        console.log(data);
        res.send(" ");
    });
});

你忘了return mysqlQ中的声明函数(您的函数没有返回任何内容,这是 TypeError 关于 undefined 的原因)

function mysqlQ(q) {
    return mysql.createConnection({
    ...

关于mysql - 努力使用promise-mysql和bluebird从mysql取回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42531084/

相关文章:

angularjs - 页面重定向后的 session 存储变量(使用 AngularJS 路由)

node.js - 避免 waterfall 对话期间 Louis 的干扰(Bot Framework v4)

javascript - 如何检查 promise 返回值并在angularjs中采取行动?

javascript - 错误 : Callback was already called when using pg-promise with async series

php - 选择框中选择的不同值和 id

mysql - 识别与非识别关系(再次!!!)

node.js - 如何让 heroku 与 sequelize.js + postgres 兼容?

javascript - 如何将 Promise 上下文中 Uncaught Error 传播到 window.onerror?

mysql - 在mysql中将mac地址从varchar转换为bigint(6)

PHP SQL 以及将 'WHERE' 与变量一起使用