このエラーが発生しています。それを解決する方法を知っている。 ノードjsサーバーで、私はいくつかの.then()関数を約束しています。最後に、何らかの理由で認識されない.catch()関数を配置しました。 チュートリアルの多くの箇所で、これがエラーの処理方法であることがわかりました。 私は外部ライブラリを使用していません。TypeError:promise.then(...)。then(...)。then(...)。then(...)。catchはノードJsの関数ではありません
エラー:
TypeError: promise.then(...).then(...).then(...).then(...).catch is not a function
これは私のコードです:
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});
});
}
.catchは()約束のエラーを処理するための正しい方法ではない場合、あなたは何を示唆していますか?イムは、外部ライブラリを使用して回避し、ネイティブのJavaScriptに
EDITを使用して好むしようとしている:ソリューション
私は私はこの問題を解決する助けた青い鳥と呼ばれるNPMモジュールを追加しました。
'.catch()' 'try'ブロックのためです:あなたは幸いにもマングースが使用するデフォルトの約束を、上書きすることができます。 'then'ブロックにエラーが返された場合は、新しいエラーを投げる –
現在の[answer](http://stackoverflow.com/a/33678090/691711)が役に立たない場合、どのようなPromise' Album.findOne()。ここで() 'は返されます。おそらく、使用しているnode.jsのバージョンも含まれています。 – zero298