JavaScript Verspricht Mungo und Bluebird fehlt Fangen und Scheitern

8

Ich habe begonnen, Versprechungen zu verwenden, ich benutze Node.js Mango (mit Mungo) und Bluebird .. Das Problem, das ich habe, ist aus irgendeinem Grund, wenn ich den Mungo-Ruf mit Funktionen verkette, die Versprechen versprechen (ich nehme an, dies ist der richtige Weg, um zurückzukehren und zu ketten), dann bekomme ich:

%Vor%

Wenn ich den Fang nicht ändern will, bekomme ich das gleiche Problem:

%Vor%

Was ich tue, ist das Funktions- (Null-, Funktions-) Muster, das genau fehlschlägt und fängt. Der Catch / Fail ist jedoch besser lesbar. Irgendeine Ahnung, warum ich das bekomme und wie ich dieses Problem lösen sollte?

Hier ist ein Beispiel für den Codeblock.

%Vor%

Und hier ist der Stacktrace:

%Vor%     
Dory Zidon 22.05.2014, 16:52
quelle

4 Antworten

15

mongoose 4.1+ Betreuervorschlag:

es2015 (es6):

%Vor%

bluebird:

%Vor%

F:

%Vor%     
Jason Sebring 18.11.2015, 15:15
quelle
5

Ich kenne keine Moongose, aber im Allgemeinen sind Funktionen wie "Fail" oder "Catch" bequeme Abkürzungen und gehören nicht zur Spezifikation der Versprechen. Als solche muss die Bibliothek sie nicht haben, um Versprechen zu erfüllen. Anscheinend sind sie in deinem Fall nicht da.

Sie können die gleiche Funktionalität mit then(successHandler, rejectionHandler) erreichen.

Um die Ablehnung von Versprechen zu behandeln, können Sie Ihren Code wie folgt neu schreiben:

%Vor%     
smyk 22.05.2014 18:10
quelle
3

Eine andere Möglichkeit, dies zu tun, wird in der Bluebird-Dokumentation gezeigt:

Ссылка

Sie können das Mungo-Versprechen in der Promise.resolve () von bluebird verpacken, und Sie erhalten ein Bluebird-Versprechen zurück.

%Vor%     
Ryan Quinn 28.08.2014 02:27
quelle
0

Es scheint, dass das Problem darin bestand, die beiden Arten von Versprechen (Bluebird und Mungo) zu mischen.

Nachdem ich promsifyAll für das db-Objekt verwendet hatte, fing der Fang an zu arbeiten.

%Vor%
    
Dory Zidon 22.05.2014 18:45
quelle