2015-11-12 16 views
7

Otrzymuję ten błąd i ja nie wiem, jak to rozwiązać. Na serwerze js węzła używam funkcji .then() na obietnicy, a na końcu umieściłem funkcję .catch(), która z jakiegoś powodu nie jest rozpoznawana. Widziałem w wielu miejscach samouczków, że w ten sposób obsługiwany jest błąd. Nie używam żadnych zewnętrznych bibliotek.TypeError: promise.then (...). Then (...). Then then (...). Then (...). Catch nie jest funkcją w węźle Js

Błąd:

TypeError: promise.then(...).then(...).then(...).then(...).catch is not a function 

To jest mój kod:

exports.joinAlbum = function(req, res){ 


var promise = Album.findOne().where({'shortId': req.body.shortId}).exec(); // Returns a promise 


promise.then(function(albumDoc){ 
    console.log('Then #1'); 

    ..... 

    } 
    return albumDoc.save(); // Returns a promise 
}) 



.then(function(albumDoc){ 
    console.log('Then #2'); 

    ..... 

    return User.findById(req.body.userId).exec(); // Returns a promise 
}) 


.then(function(userDoc){ 
    console.log('Then #3'); 

    ........ 

    return userDoc.save(); // Returns a promise 
}) 

// Return a response 
.then(function(savedUserDoc){ 
    console.log('Then #4'); 
    return res.status(200).json({success: true}); 
}) 

    //Error handler 
.catch(function(err){ 
    console.log('Catch #1'); 
    console.log(err); 
    res.status(200).json({success: false}); 
}); 
} 

Jeśli .catch() nie jest poprawny sposób obsłużyć błąd obietnica, co proponujesz? Im próbuje unikać zewnętrznych bibliotek i wolą używać natywnego kodu JavaScript

EDIT: rozwiązanie

Dodałem moduł npm zwany niebieski ptak, który pomógł mi rozwiązać ten problem.

+0

'.catch()' jest dla 'try' bloku. Jeśli błąd zostanie zwrócony w bloku 'then', wyślij nowy błąd –

+1

Jeśli aktualny [odpowiedź] (http://stackoverflow.com/a/33678090/691711) nie jest pomocny, proszę powiedz jaki rodzaj obietnicy. Album.findOne(). Where() 'zwraca, jak w jakiej bibliotece, jeśli nie ** ES6 **. Być może dołącz tę wersję pliku node.js, której używasz. – zero298

Odpowiedz

Powiązane problemy