2017-03-01 10 views
0

エクスプレスリクエストからのデータを使用して、mysqlデータベースにアクセスしてレスポンスとして使用しようとしています。しかし、約束を使ってデータを取り戻すのは苦労している。ライン上のpromise-mysqlとbluebirdを使用してmysqlからデータを取得するのに苦労します

TypeError: Cannot read property 'then' of undefined 

を:

Expressは、私はエラーを取得しています

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

私は約束

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

を処理するための約束 - MySQLと青い鳥を使用していますmysqlのビットをビット67:14 は

(あなたの関数は何も返しませんでした210
mysqlQ(q).then(function() { 

しかしmysqlQはあなたのエンドポイント定義が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(" "); 
    }); 
}); 

dataパラメータを欠いRows

+0

asyncの概念を読む –

+0

'しかし、mysqlQはRowsの値を返さなければなりません - あなたはそうだと思いますが、return文がなければ、未定義を返します –

答えて

0

の値を返す必要がありますそして、あなたはmysqlQ機能でreturn文を忘れてしまいましたその理由は、TypeErrorundefinedです。

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

ありがとう –

関連する問題