2017-07-03 6 views
1

wissen ich möchte, wenn exec zu verwenden oder dann, und was ist der UnterschiedDer richtige Einsatz von asynchronen Funktionen

Schema.findOne({_id:id}).then(function(obj){ 
//do somthing 
}) 

oder exec

Schema.findOne({_id:id}).exec().then(function(obj){ 
//do somthing 
}) 
+0

Sind Sie Mungo mit? – rebe100x

+1

Mögliches Duplikat von [Mongoose - Was macht die Exec-Funktion?] (Https://stackoverflow.com/questions/31549857/mongoose-what-does-the-exec-function-do) –

Antwort

0

Einige Methoden der Mongoose zu verwenden gibt eine Abfrage, aber nicht ausführen andere werden direkt ausgeführt.

Wenn nur eine Abfrage zurückgegeben wird, verwenden Sie exec().

'then' wird nach der Ausführung als Versprechens-Handler verwendet.

Sie können 'then und catch' oder Callback nach der Ausführung verwenden.

Es gibt ein Beispiel mit Versprechen und das gleiche mit Callback.

Cat.find({}) 
    .select('name age') // returns a query 
    .exec() // execute query 
    .then((cats) => { 

    }) 
    .catch((err) => { 

    }); 

Cat.find({}) 
    .select('name age') // returns a query 
    .exec((err,cats) => { // execute query and callback 
    if(err){ 

    } else { 

    } 
    }); 

Jetzt können gleiche ohne Abfrage machen (keine Felder auswählen, nicht exec müssen, weil bereits exec)

Cat.find({}) 
    .then((cats) => { 

    }) 
    .catch((err) => { 

    }); 

Cat.find({}, (err,cats) => { 
    if(err){ 

    } else { 

    } 
    }); 
+0

Natürlich ist Cat ein Beispielmodell ! – jesusgn90

Verwandte Themen