gpt4 book ai didi

node.js - Node MongoDB : connection method callbacks never fire

转载 作者:可可西里 更新时间:2023-11-01 09:45:15 25 4
gpt4 key购买 nike

我正在从字面上复制一个示例 MongoDB Node documentation (从字面上看,MongoDB 的官方文档尚未更新以匹配 the recommendation to use MongoClient ,所以我使用的是 MongoClient)。

createcollection() 的回调永远不会运行。我在使用其他连接方法时遇到过类似的问题,例如 find()、findAndModify()。

直接复制单元测试:

mongodb.MongoClient.connect(URL, function(err, db){
// Establish connection to db
log(1)
assert.equal(null, err);

// Grab a collection without a callback no safe mode
var col1 = db.collection('test_correctly_access_collections');

// Grab a collection with a callback but no safe operation
db.collection('test_correctly_access_collections', function(err, col2) {
log(2)
assert.equal(null, err);

// Grab a collection with a callback in safe mode, ensuring it exists (should fail as it's not created)
db.collection('test_correctly_access_collections', {strict:true}, function(err, col3) {
log(3)
assert.ok(err != null);

// Create the collection
db.createCollection('test_correctly_access_collections', function(err, result) {
log(4)
// NEVER RUNS
});
});
});
})

从其他阅读中,我听说如果连接中断或速度慢,Mon​​goDB 将对查询进行排队。但是 connect() 工作正常,我的数据库是本地主机并且有 <2Kb 的文档。

我的问题是:

  • 如何使收集方法发挥作用?
  • 我在哪里可以了解查询排队的情况?我一直在查看的官方文档中似乎没有提到这一点。

编辑:代码对每个 URL 只工作一次。随后尝试使用相同的 URL 运行相同的代码将始终失败。更改 URL 将再次起作用,每个 URL 一次。

最佳答案

这是因为 node-mongodb-native,当前的“稳定”MongoDB 驱动程序,默默地包装并丢弃所有异常,包括从回调中启动的任何内容,无论向下多少范围。

参见 https://groups.google.com/forum/#!topic/node-mongodb-native/AZewJaX4YuE

解决方案是使用不稳定的 1.3.18 系列 mongodb 包,直到 1.4(永久修复问题)稳定。

关于node.js - Node MongoDB : connection method callbacks never fire,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19299532/

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