2016-01-20 110 views
0

好的,所以我可以使用一些幫助。我知道我的代碼不正確,最簡單的處理方法是什麼。正如你所看到的,我的返回將在查詢執行之前返回一個空變量。節點MYSQL請求,異步問題

const fetchall = function fetch(sessionid) { 
     let data; 
     connection.query(
     'SELECT * FROM LOCATIONS WHERE SESSIONID = ?', [sessionid], 
     function(err, rows, fields) { 
      data = rows; 
     }); 
     return data; 
    }; 

我在這裏使用快遞,請求的代碼如下所示。

app.post('/api/locations/fetchall', function (req, res) { 
    let sesionid = sessions.active(); 
    let results = locations.fetchall(sesionid); 
    res.send(results); 
    }); 

回答

1

您必須返回查詢中的數據。我不確定你用什麼模塊來進行數據庫查詢。我假設這個函數(err,rows,fields){}是一個回調函數。這意味着你必須在你的query()函數中返回數據,而不是在外面。

否則,檢查你的框架是不是基於承諾,即。你可以打電話像

connection.query("your query").then(function(data){ 
    //return data somewhere in here 
})