我对Mongo插入函数中可选回调的目的很困惑。究竟用于什么?
var mongo = require('mongodb').MongoClient
var url = 'mongodb://localhost:27017/learnyoumongo'; // learnyoumongo is the Database
var firstName = process.argv[2];
var lastName = process.argv[3];
var doc = {
'firstName': firstName,
'lastName': lastName
}
mongo.connect(url, function(err, db) {
if (err) throw err;
// db gives access to the database
var docs = db.collection('docs');
docs.insert(doc,function(err, data){ // What is the purpose of this callback function?
if (err) throw err;
console.log(JSON.stringify(doc));
db.close()
})
});
答案 0 :(得分:2)
doc.insert
是异步调用。它将在操作完成之前立即返回。
如果你想在插入实际完成后做一些事情(包括检查它是否成功),你需要在回调中执行此操作(之后调用)。
请注意,您使用mongo.connect
执行相同的操作:您只能从回调中开始使用连接。
这是Javascript编程中一种非常常见的模式:触发后台操作,稍后将结果作为回调的参数接收。