I am using findOneAndUpdate method of Mongoose to handle put requests for my restful API. I leave the password to the second step to use 'save' pre hook of Mongoose, and I am hashing the password in the pre hook.
router.put("/:id", function(req, res, next){
var password = req.body["password"];
delete req.body["password"];
var p = new Promise(function (resolve, reject){
User.findOneAndUpdate({_id:req.params.id}, req.body, { 'new': true } ,function (err, user) {
if (err) {
reject(err);
}
else {
resolve(user);
}
});
});
p.then(function(user){
if(!password) {
return user;
}
user.password = password;
user.save(function(err) {
if (err) {
return(err);
}
else {
console.log(user); // The object is updated and here, but in postman I have "No Data Received"
return(user);
}
});
}).then(function(result){
return res.json(result);
}).catch(function(err){
next(err);
});
});
In the comment above, I have the user object in that block. However in Postman, I have "No Data Received". Any thoughts?