【问题标题】:Node.JS running a Node-Msql query again with out stopping node.js scriptNode.JS 再次运行 Node-Mysql 查询而不停止 node.js 脚本
【发布时间】: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 是我尝试在查询用完时再次重新运行查询

标签: javascript mysql node.js node-mysql


【解决方案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的时候,会重新运行代码?
猜你喜欢
  • 2011-09-23
  • 1970-01-01
  • 2012-05-20
  • 1970-01-01
  • 1970-01-01
  • 2020-04-10
  • 1970-01-01
  • 2020-07-23
  • 1970-01-01
相关资源
最近更新 更多