2016-01-20 71 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 
})