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

时间:2017-03-01 11:55:28

标签: mysql node.js promise bluebird

我正在尝试使用来自快速请求的数据来访问mysql数据库以用作响应。但我正在努力使用承诺来恢复数据。

快速位

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(" ");
    })
})

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

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

的值

1 个答案:

答案 0 :(得分:0)

您的端点定义缺少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({
    ...