节点MYSQL请求,异步问题

时间:2016-01-20 02:22:33

标签: mysql asynchronous express

好的,我可以使用一些帮助。我知道我的代码不正确,最简单的方法是处理这个问题。正如您所看到的,我的返回将在执行查询之前返回一个空变量。

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

我在这里使用express,请求的代码如下所示。

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

1 个答案:

答案 0 :(得分:1)

您必须在查询中返回数据。我不确定您使用什么模块来进行数据库查询。我假设函数(错误,行,字段){}是一个回调。这意味着您必须在query()函数中返回数据,而不是在外部。

否则,检查您的框架是否不基于承诺,即。你可以打电话给

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