I’m having issues updating a document from within a find using Mongoose. The issue is only when I attempt to overwrite the document with an object (e.g doc = req.body). I am however able to directly set properties of the original document to a specific string (e.g. doc.name = ‘jason borne’;).
I’ve verified that res.body is an object, so I don’t see why I’m unable to set it this way.
Client.findById(req.params.client_id, function (err, client) {
if (err)
return next(new restify.InternalError(err));
// client.name = 'jason borne';
client = req.body;
client.save(function(err) {
if (err)
return next(new restify.InternalError(err));
res.send(client);
});
});
When attempting to set the doc to an object, I receive the error:
TypeError: Object # has no method ‘save’
I’m aware that I can do an update with a simple Client.update(…) command, however this method does not allow my schema middleware or validation to run (which is notated in the Mongoose documentation).
Any thoughts? I’m new to Node, and Mongoose.
You need to use something like underscore’s
extendmethod to copy the properties ofreq.bodyinto theclientobject instead of just re-pointingclienttoreq.bodyas you are now.