mysql - 节点MYSQL请求,异步问题

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

最佳答案

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

或者,检查您的框架是否不是基于 promise 的,即。你可以这样称呼

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

关于mysql - 节点MYSQL请求,异步问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34890443/

相关文章:

javascript - 字符串值在被调用函数内变为 null

php - 如何在 for 循环中循环以获取具有相同 ID 的多个值

php - cakephp 应用程序的 mysql 中的十进制分隔符

mysql - Applescriptable mySQL 客户端 - 低成本还是免费?

mysql - MySQL 中的数据归档

c# - 无状态或有状态的 C# actors

javascript - 使用 Express 模块作为中间件

javascript - 无法在 $.post 回调中设置作用域变量

c# - 将任务按完成顺序排序

node.js - NodeJs环境变量与配置文件