Lodash fusionne avec la mangouste

Voici un extrait de code d'une méthode de mise à jour utilisant express.js et mongoose. J'essaie de fusionner l'entité mongo existante avec l'objet json à partir du corps de la charge de demande.

exports.update = function(req, res) { if(req.body._id) { delete req.body._id; } Entity.findById(req.params.id, function (err, entity) { if (err) { return handleError(res, err); } if(!entity) { return res.send(404); } var updated = _.merge(entity, req.body); updated.save(function (err) { if (err) { return handleError(res, err); } return res.json(200, entity); }); }); }; 

Cela ne fonctionne malheureusement pas. Je reçois cette erreur

 node_modules/mongoose/lib/document.js:1272 doc.save(handleSave); ^ TypeError: Object #<Object> has no method 'save' 

J'ai essayé de créer ma propre méthode de merge personnalisée, mais je ne peux toujours pas réaliser une fusion appropriée:

 exports.update = function(req, res) { if(req.body._id) { delete req.body._id; } Entity.findById(req.params.id, function (err, entity) { if (err) { return handleError(res, err); } if(!entity) { return res.send(404); } var updated = merger(resume, req.body)//_.merge(resume, req.body); updated.save(function (err) { if (err) { return handleError(res, err); } return res.json(200, entity); }); }); }; function merger (a, b) { if (_.isObject(a)) { return _.merge({}, a, b, merger); } else { return a; } }; 

Avec cette variance, j'ai ce message:

 node_modules/mongoose/lib/document.js:1245 return self.getValue(i); ^ TypeError: Object #<Object> has no method 'getValue' 

En conséquence, je ne suis pas en mesure d'étendre les valeurs de l' entity et de req.body à la destination updated . Seule la structure est copiée, je suppose. Quelqu'un me permet de savoir où je me trompe. Merci.

J'ai pu réparer ceci en changeant _.merge en _.extend , puis en appelant pour enregistrer directement les résultats retournés par findById au lieu de la variable updated à updated .

 exports.update = function(req, res) { if(req.body._id) { delete req.body._id; } Entity.findById(req.params.id, function (err, entity) { if (err) { return handleError(res, err); } if(!entity) { return res.send(404); } _.extend(entity, req.body); entity.save(function (err) { if (err) { return handleError(res, err); } return res.json(200, entity); }); }); };