我对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.
});
});
所以有了上面的脚本,我想:
- 打开连接
- 检查日志集合,如果不创建,则继续
- 创建用户?工作吗
我仍然习惯异步模型,感谢您的帮助。
在这种情况下,我通常会将延续包在一个命名回调中:
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
});