0

我对 Node.js 很陌生,我正在使用 MongoDb 驱动程序,我了解 Node.js 的工作流程是事件驱动的,一切都是异步运行的,但我只是不明白如何做这样的事情:

var mongo = require('mongodb');
var db = new mongo.Db('meta', new mongo.Server('localhost', 27017, { auto_reconnect: true }));

db.open(function(error, db){
  if(error){
    throw error;
  }

  db.collection('logs', function(error, collection){
    if(!collection){
      db.createCollection('logs', callback); // How does this callback works? I mean, how can we continue the previous execution of the script?
    }

    // Have fun.
  });
});

所以用上面的脚本我想:

  1. 打开连接
  2. 检查日志收集,如果不创建,则继续...
  3. 创建用户?做工作?

我仍然习惯于异步模型,已经感谢您的帮助。

4

1 回答 1

1

在这种情况下,我通常做的是将延续包装在命名回调中:

if (!collection) {
    db.createCollection('logs', next);
} else {
    next(null, collection);
}

function next(err, collection) {
    // do something
}

话虽如此,该createCollection方法还将返回集合对象,并且仅在它不存在时才创建它。你可以写:

db.createCollection('logs', function(err, collection) {
    // do something
});
于 2012-08-03T15:56:30.797 回答