I am very new to mongoose and javascript promise. I am going to write update query in global promise way and my code is in the following-
metadataAPI.route('/:surveyID')
.put(function(req, res) {
Surveys.findOne({_id : req.params.surveyID}, {"metadata" : 1})
.then(function(survey) {
return survey.metadata;
})
.catch(function(err) {
res.json({ Message : "Incorrect surveyID!"});
})
.then(function(metadata) {
Surveys.findOneAndUpdate(
{_id : req.params.surveyID},
{
$set : {
"metadata.language" : req.body.language || metadata.language,
"metadata.createdBy" : req.body.createdBy || metadata.createdBy,
"metadata.qCount" : req.body.qCount || metadata.qCount,
"metadata.category" : req.body.category || metadata.category,
"metadata.suggestionEnable" : req.body.suggestionEnable || metadata.suggestionEnable,
"metadata.publish" : req.body.publish || metadata.publish,
"metadata.pageArray" : req.body.pageArray || metadata.pageArray
}
}
)
.then(function() {
Surveys.findOne({_id : req.params.surveyID}, {"metadata" : 1})
.then(function(survey) {
res.json(survey);
})
.catch(function(err) {
res.send(err);
});
})
.catch(function(err) {
res.send(err);
});
})
.catch(function(err) {
res.send(err);
});
});
My problem is that although I have the catch() handler after each of then() function. I still get the UnhandledPromiseRejectionWarning from node. How can I solve it. Thank you!