Node.JS 再次运行 Node-Mysql 查询而不停止 node.js 脚本

Posted

技术标签:

【中文标题】Node.JS 再次运行 Node-Mysql 查询而不停止 node.js 脚本【英文标题】:Node.JS running a Node-Msql query again with out stopping node.js script 【发布时间】:2016-07-27 03:43:53 【问题描述】:

我需要重新运行 node.js 查询,以获取最新条目。这是我到目前为止所尝试的。

 setTimeout(function()  

connection.query('SELECT *  FROM News ORDER BY Content DESC LIMIT 1', function(err, rows, fields)
var News = rows[0].Content;
, 2000);

我原以为这会起作用,当计时器达到 0 时再次运行查询,我知道 2 秒有点短,这只是为了测试目的。

它是 express.js Web 服务器的所有部分,当我导航到该页面时,它不会使用最新条目更新文本。处理这个问题的最佳方法是什么?我必须重新启动脚本才能获取最新条目,我想这样做而不必重新启动脚本。

【问题讨论】:

你能提供更多细节吗?该查询是异步执行的,因此您需要确保为您的 req/resp 以及此查询正确处理该查询。 setTimeout 不会阻止响应返回给客户端。 什么样的细节?我只需要知道如何重新运行 mysql 查询。 您是否两次运行相同的查询并使用 setTimeout 试图延迟第二次运行? 不,setTimeout 是我尝试在查询用完时再次重新运行查询 【参考方案1】:

我认为问题在于您需要进行新的请求/响应。

setTimeout 应该在浏览器中设置,而不是在 node.js 中。

所以在你想要的 n 秒后,你做一个新的请求/响应,然后对 Mysql DB 做一个新的查询。

现在,另一方面,我们可能有一个缓存的结果集。为避免缓存尝试改变您的查询选择文本。比如写成小写

select *  from news order by content desc limit 1

【讨论】:

我使用 News 变量来显示结果,它在查询数据库时更新一次,但我不能在同一代码中执行超过 1 个 mysql 查询? 我想说的是,响应将在第二个查询运行之前发送......所以响应与第一个调用而不是第二个调用有关...... setTimeout 不会t 停止下一行运行。 我正在使用计时器,以便当它用完时,它会重新运行查询?我对你在说什么感到困惑。 @scottjustin5000 说你也一样。简单了解或研究更多关于 setTimeout... 不是像 linux 中的 wait() 方法。 javascript中还有其他方法可以等待...例如尝试for(;;)dosomething; 我不等了,就是到0的时候,会重新运行代码?

以上是关于Node.JS 再次运行 Node-Mysql 查询而不停止 node.js 脚本的主要内容,如果未能解决你的问题,请参考以下文章

INSERT INTO 因 node-mysql 而失败

Node-MySQL 官方文档

MySQL查询丢失导致在phpMyAdmin中返回的node-mysql

Nodejs与MySQL交互(felixge/node-mysql)

INSERT INTO 因 node-mysql 失败 - 变量始终为 NULL

Node.js mysql 事务