2016-04-26 14 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プログラミングの非常に一般的なパターンです。バックグラウンド操作を無効にし、後でその結果をコールバックの引数として受け取ります。

関連する問題