2016-04-26 26 views
2

Ich bin ein aber verwirrt über den Zweck der optionalen Rückruf innerhalb Mongos Einfügefunktion gesehen. Wofür wird das genau verwendet?Mongo DB einfügen Funktionssyntax

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

Antwort

2

doc.insert ist ein asynchroner Aufruf. Es wird sofort zurückkehren, bevor die Operation abgeschlossen ist.

Wenn Sie etwas tun möchten, nachdem die Einfügung tatsächlich durchgeführt wurde (einschließlich Überprüfung, ob es erfolgreich war), müssen Sie dies im Callback tun (das anschließend aufgerufen wird).

Beachten Sie, dass Sie dasselbe mit mongo.connect tun: Sie können die Verbindung nur innerhalb des Rückrufs verwenden.

Dies ist ein sehr häufiges Muster in Javascript-Programmierung: Feuer aus einer Hintergrundoperation, erhalten Sie das Ergebnis einige Zeit später als Argumente für einen Rückruf.