Node.js 节点MongoDB:连接方法回调从不触发

Node.js 节点MongoDB:连接方法回调从不触发,node.js,mongodb,mongodb-query,Node.js,Mongodb,Mongodb Query,我从字面上复制了一个示例(几乎是字面上的,MongoDB的官方文档还没有更新到匹配的程度,所以我使用的是MongoClient) createcollection()的回调永远不会运行。我在使用其他连接方法时也遇到过类似的问题,例如find()、findAndModify() 直接从单元测试中复制: mongodb.MongoClient.connect(URL, function(err, db){ // Establish connection to db log(1) asse

我从字面上复制了一个示例(几乎是字面上的,MongoDB的官方文档还没有更新到匹配的程度,所以我使用的是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
      });
    });
  });
})

从其他阅读资料中,我听说如果连接中断或速度慢,MongoDB将对查询进行排队。但是connect()工作得很好,my DB是localhost并且有发生这种情况是因为节点mongodb native,当前的“稳定”mongodb驱动程序,以静默方式包装并丢弃所有异常,包括从回调启动的任何异常,无论作用域减少了多少


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

也许不是很有帮助,但是当我用
URL='1'运行这个时mongodb://localhost/bop“
,调用所有回调。代码工作正常(一般来说,通过快速测试验证)。Node.JS的本机驱动程序不排队,但MongooseJS排队(包装NodeJS驱动程序)。除了您的问题之外,您还有其他代码吗?第二次我得到
assert.ok(err!=null)失败,因此,不,我无法访问
4
。当集合不存在时,断言检查
db.collection
strict
集是否失败。问题是,第二次运行它时,它确实存在,因此您将返回null作为err,并且断言失败。测试基本上假设数据库是干净的,可以正常运行。@hurshagrawal Yep,在下面添加了答案。当前节点mongodb native已损坏,mongodb Inc/10Gen知道这一点。