Node.js MongoDb确保收集异步工作流



我对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. 创建用户?工作吗

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

在这种情况下,我通常会将延续包在一个命名回调中:

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
});

最新更新