这是使用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扩展到更新的目标.我估计只有结构被复制了.有人请让我知道我哪里错了.谢谢.