I have a problem with update documents in mongodb over mongoose.
My model bellow:
var mongoose = require(\'mongoose\');
var bcrypt = require(\'bcrypt-nod
I found the mistake. Note that I'm calling
req.body.user_id
where should be
req.params.user_id
(PUT) http://127.0.0.1:3000/api/users/54724d0fccf520000073b9e3
Further, the req.body
would have key value as Text and realized as String
object, inside the code. Thus, it is useful to parse the string into JSON using JSON.parse(req.body.user)
- while the user
is the key and { first_name: 'Michal', last_name: 'Test' }
is the value.
console.log(req.body);
var update = JSON.parse(req.body.user);
var id = req.params.user_id;
User.findByIdAndUpdate(id, update, function(err, result){
if(err){
console.log(err);
}
console.log("RESULT: " + result);
res.send('Done')
});
Note: the update value is sent to Mongo DB as
{$set: { first_name : 'Michal`, last_name: 'Test' }
Further reference: Mongoose JS documentation - findByIdAndUpdate
You have to use req.params.user_id
instead req.body.user_id
exports.updateUser = function (req, res) {
console.log(req.body);
User.findByIdAndUpdate(req.params.user_id,{$set:req.body},{new:true}, function(err, result){
if(err){
console.log(err);
}
console.log("RESULT: " + result);
res.send('Done')
});
};