gpt4 book ai didi

javascript - 蒙戈错误: cursor killed or timed out - Meteor timeout settings ineffective

转载 作者:行者123 更新时间:2023-11-27 22:44:44 24 4
gpt4 key购买 nike

我的 Meteor 1.2.1 程序在 find().forEach() 循环中抛出 MongoError:cursor Killed or timed out,所以我找到了 this page这说明这段代码可以防止:

var myCursor = db.users.find().noCursorTimeout()

但是,driver docs我的 Meteor 说该方法不存在: Object [object Object] 没有方法 'noCursorTimeout'

Mongo 自动重新连接是 enabled by default并没有帮助,Meteor forum也没有帮助,甚至 .find({}, {timeout:false}) 根据 this comment .

2016-07-20 11:21:37 更新开始

2016-07-20 11:37:21 调用方法“updateCollections”时出现异常 MongoError:光标被终止或超时

也许 Meteor 对 2016-07-20 09:34:57 失败的 SOAP 调用感到困惑?

  "error": {
"errno": "ETIMEDOUT",
"syscall": "connect",
"code": "ETIMEDOUT"
},

最佳答案

假设maxTimeMS在这种情况下会有所帮助,您可以通过使用 rawCollection 来访问它对象而不是 Meteor 集合本身。

很简单:

var rawCollection = Meteor.users.rawCollection();
var cursor = rawCollection.find({}).maxTimeMS(5000);
var myData = fetchCursor(cursor);

哪里fetchCursor是一个简单的光纤感知辅助函数,可以像这样实现:

var fetchCursor = Meteor.wrapAsync(function fetchCursor (cursor, cb) {
cursor.toArray(cb);
});

不过,我不确定这个方法是否正是您正在寻找的。

编辑

如果您不需要整个文档数组,但想要独立处理每个文档,那么使用 each 可能会更好而不是toArray ,例如

var fetchCursor = Meteor.wrapAsync(function fetchCursor (cursor, cb) {
cursor.each(function (err, doc) {
if (err) return cb(err);
if (!doc) return cb(null, { done: true }); // no more documents
// do something with the document ...
});
});

关于javascript - 蒙戈错误: cursor killed or timed out - Meteor timeout settings ineffective,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38480193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com