Mungo save() mit native Versprechen - wie, um Fehler abzufangen
Ich bin versucht zu fangen Fehler, die ausgelöst werden von Mongoose mit Mungo ' s native verspricht. Aber ich weiß nicht, wo man das error-Objekt von Mongoose.
Ich würde gerne die Fehler, die geworfen werden in die .then()
s und fing an .catch()
wenn möglich.
var contact = new aircraftContactModel(postVars.contact);
contact.save().then(function(){
var aircraft = new aircraftModel(postVars.aircraft);
return aircraft.save();
})
.then(function(){
console.log('aircraft saved')
}).catch(function(){
//want to handle errors here
});
Versuchte, nicht die Verwendung einer anderen Bibliothek, wie .speichern() gibt ein Versprechen nativ.
Du musst angemeldet sein, um einen Kommentar abzugeben.
verlängern Sie Versprechen Funktionalität auf Mungo mit
bluebird
MongooseJS verwendet die mpromise Bibliothek, die nicht über eine
catch()
Methode. Zum Fehler abfangen verwenden Sie den zweiten parameter fürdann()
.UPDATE 1: Als 4.1.0, MongooseJS nun die Möglichkeit, die - Spezifikation von dem Versprechen der Umsetzung zu verwenden:
UPDATE 2: Wenn Sie mpromise in den aktuellen Versionen von 4.x Sie erhalten diese deprication Warnung:
.then()
s oder nur die letzten.then()
? Tritt der Fehler Blase bis zum letzten dann, oder muss ich jeden dann?....save().then(null, function(err) {...});
würden Sie brauchen nur zu Folgen, die typische Methode von blubbern bis der Fehler nach der Behandlung, wenn es sein muss.DeprecationWarning: Mongoose: mpromise (mongoose's default promise library) is deprecated
. Also ja, es ist noch dort für die Abwärtskompatibilität, aber zukünftige Versionen werden wahrscheinlich entfernen Sie es.user.save().then(res=>{...}).catch(err=>{...})
Sind Sie wahrscheinlich Rückkehr das Versprechen erstellt von Methode speichern, zu handhaben, es irgendwo anders.
Wenn dies der Fall ist, möchten Sie vielleicht werfen Sie den Fehler an eine übergeordnete Versprechen, wo Sie den Fehler abzufangen. Sie können es erreichen mit diesem:
Ich bin nicht wirklich sicher, ob das vielleicht ein anti-pattern, aber diese helfen, Sie zu behandeln, Ihre Fehler in einem Ort.
=>
syntax in javascript. Was heißt es?Bluebird ist eigentlich nicht erforderlich, verspricht mit Mungo, kann man einfach einen Knoten in der einheimischen verspricht, genau wie dieser:
folgende Antwort ist für 2018 Menschen , nodejs ist jetzt geändert , callback wird ersetzt mit async/await.
Können wir nahm Versprechungen in Mungo mit "dann".
schlage ich vor, folgende Antwort