【发布时间】:2018-01-21 08:31:48
【问题描述】:
在 Heroku 上运行应用程序时,使用 Parse-Server 和 mLab,我在日志中收到以下错误:
app[web.1]: /app/node_modules/parse-server/lib/ParseServer.js:481
app[web.1]: throw err;
app[web.1]: ^
app[web.1]: MongoError: connection destroyed, not possible to instantiate cursor
app[web.1]: at nextFunction (/app/node_modules/mongodb-core/lib/cursor.js:607:55)
app[web.1]: at Cursor.next [as _next] (/app/node_modules/mongodb-core/lib/cursor.js:692:3)
app[web.1]: at fetchDocs (/app/node_modules/mongodb/lib/cursor.js:856:10)
为了让事情变得更复杂,我并不总是在运行相同的代码时得到它。
在网上搜索后,我了解到它是在尝试从数据库中读取 100 多条记录时发生的。 这似乎与我观察到的一致。
很遗憾,我没有在网上找到任何解决该问题的方法。 因此我的问题是:我该如何处理这个问题?
有没有办法将阈值从 100 提高到更高的值? 或者有什么其他好的方法来解决这个问题?
如果这在此处可能有用,则执行该工作的函数的代码。 在大多数情况下,它就像魅力一样。 当提供的 typKey 碰巧匹配的记录太多时,就会出现上述问题。
function get_List(displayPage, db, response) {
db.collection('TheCollection', function (err, collection) {
collection.find({"typeKey": "TYPE01"}).toArray(function(err, items) {
if(err) throw err;
response.render('pages/displayList.ejs', {
dataArray: items
});
});
});
}
【问题讨论】:
-
发布您的代码以了解如何检索
-
我刚刚编辑了帖子并添加了相关代码。
-
这些天我遇到了同样的问题。深入查看您的代码并找到关闭数据库连接的位置
db.close()。 Javascript 不是从上到下运行的。相反,您可以认为整个代码同时运行。你可以看看this问题。我用它来解决我的问题,它奏效了。 -
你知道我刚开始遇到这个问题。我查看了我的 db.close() 在哪里,我意识到是的,在我调用 .close() 时,一些回调可能还没有完成。延迟 1 秒(粗略),现在它可以工作了。
标签: mongodb heroku parse-server