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.
'.catch()' jest dla 'try' bloku. Jeśli błąd zostanie zwrócony w bloku 'then', wyślij nowy błąd –
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