2016-04-26 136 views
2

我對Mongo的插入函數中看到的可選回調的目的感到困惑。這究竟是用來幹什麼的?Mongo DB插入函數語法

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

回答

2

doc.insert是一個異步調用。它會在操作完成之前立即返回。

如果您想要在插入實際完成後執行某些操作(包括檢查是否成功),則需要在回調(此後調用)中執行此操作。

請注意,您正在使用mongo.connect做同樣的事情:您只能從回調中開始使用連接。

這是一種非常常見的Javascript編程模式:觸發後臺操作,稍後接收結果作爲回調的參數。