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!
 
    