2017-03-01 6 views
0

빠른 요청의 데이터를 사용하여 mysql 데이터베이스에 액세스하여 응답으로 사용하려고합니다. 그러나 약속을 사용하여 데이터를 되 찾으려 애쓰는 중입니다.promise-mysql과 bluebird를 사용하여 mysql에서 데이터를 다시 얻으려고하는데

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의 비트 : 선

TypeError: Cannot read property 'then' of undefined 

을 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 문을 잊었다 그 이유는 undefinedTypeError입니다.

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

고마워. –