【问题标题】:Odd "timeouts" when attempting to execute a MongoDB query from a Sails.js app尝试从 Sails.js 应用程序执行 MongoDB 查询时出现奇怪的“超时”
【发布时间】:2015-08-13 19:04:14
【问题描述】:

当我在 localhost 环境中启动我的 Sails 应用程序并将其加载到浏览器中时,视图将呈现正常,对另一个(非 mongo)资源的异步请求工作正常,但是任何返回到获取数据的 Sails 的异步请求from Mongo 仅在应用启动的最初几分钟内有效。

只要我在最初的几分钟内收到一个请求,我就可以提出尽可能多的请求。除此之外,如果我等待整整 2 或 3 秒,呼叫将始终停止。

以下是使用原生查询的示例:

    Item.native(function (error, collection) {
      collection.find().sort({'count': 1}).limit(parseInt(count)).toArray(function(error, data) {
        console.log(error, data);
        return res.send(data);
      });
    });

另一个使用 Waterline 的例子:

Item.find().sort('count ASC').limit(count).exec(function (error, data) {
  console.log(error, data);
  return res.send(data);
});

当它停止时,永远不会调用回调,因此控制台不会记录任何错误。

我尝试单步执行代码,但似乎逻辑流程只是从一个内部 _dispatch() 函数反弹到几个 bind 函数,然后来回循环。

我可以从 Mongo 控制台验证查询是否正常工作,并且我在应用程序启动时使用 Waterline 为我的数据库播种,这也工作正常。我还可以正常访问集合(使用native 执行的第一个回调)。我觉得我开始没有想法了,所以任何帮助都会很棒。感谢您的观看。

这是我正在运行的参考:

  • 帆:0.11.0
  • mongo:2.6.10
  • sails-mongo:0.11.0

【问题讨论】:

标签: node.js mongodb express sails.js waterline


【解决方案1】:

gconsidine、sails-mongo v0.11.0 和 v0.11.1 的连接配置错误。检查我在上一个帖子上的答案:https://stackoverflow.com/a/29973775/4249576。尝试将sails-mongo 更新到v0.11.2。

【讨论】:

  • 哈,很高兴我没有发疯。我最终使用 MySQL/sails-mysql 只是为了继续开发,但你是对的,将sails-mongo 更新到 v0.11.2 就可以了。非常感谢。
猜你喜欢
  • 2015-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多