这是使用express.js和mongoose的更新方法的代码片段.
我正在尝试将现有的mongo实体与请求有效负载主体中的json对象合并.
我正在尝试将现有的mongo实体与请求有效负载主体中的json对象合并.
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); }); }); };
遗憾的是,这不起作用.我收到了这个错误
node_modules/mongoose/lib/document.js:1272 doc.save(handleSave); ^ TypeError: Object #<Object> has no method 'save'
我已经尝试创建自己的自定义合并方法,但仍然无法实现正确的合并:
exports.update = function(req,err); } if(!entity) { return res.send(404); } var updated = merger(resume,req.body)//_.merge(resume,entity); }); }); }; function merger (a,b) { if (_.isObject(a)) { return _.merge({},a,b,merger); } else { return a; } };
有这种差异,我有这样的信息:
node_modules/mongoose/lib/document.js:1245 return self.getValue(i); ^ TypeError: Object #<Object> has no method 'getValue'
因此,我无法将实体的值和req.body扩展到更新的目标.我估计只有结构被复制了.有人请让我知道我哪里错了.谢谢.