【问题标题】:Node.JS - Check result exists before running functionNode.JS - 在运行函数之前检查结果是否存在
【发布时间】:2017-10-11 04:06:10
【问题描述】:

我对 Node JS 比较陌生。我正在尝试查询数据库,然后简单地使用 socket.io 将该数据发送到前端,但是我注意到它间歇性地发送数据/不发送数据到前端。我假设这背后的原因是因为查询尚未完成,并且想知道在继续之前您将如何等待结果可访问?

我正在使用 npm mysql 访问套接字中的数据库,如下所示:

var mysql = require('mysql');

var connection = mysql.createConnection(
    {
      host     : 'localhost',
      user     : 'root',
      password : '',
      database : 'db'
    }
); 

这是我的查询:

    connection.query(queryString, function(err, result, fields){
        if(err) throw err;
        socket.emit('emitFunction', result);
    });

【问题讨论】:

  • 我个人只是在前端而不是节点上处理这类事情。
  • “我假设这背后的原因是因为查询尚未完成。” 不,不是这样。 function(回调)不会触发直到结果出现。这就是为什么socket.emit(...) 在回调函数内部,而不是简单地作为查询之后的下一条语句的全部原因。在写入套接字之前记录结果。也记录一些时间戳。记录,记录,记录。

标签: javascript mysql node.js sockets


【解决方案1】:

回调仅在查询完成后调用,因此结果应该在回调函数中可用。记录 err 和 result 以查看发生了什么

【讨论】:

  • 我明白了。我刚刚创建了一个回调,到目前为止它看起来很有希望。会告诉你我是怎么过的,因为这里已经很晚了。感谢您的建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-22
  • 2018-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多