Mic*_*ael 7 javascript mongoose node.js express lodash
这是使用express.js和mongoose的更新方法的代码片段.我正在尝试将现有的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);
});
});
};
Run Code Online (Sandbox Code Playgroud)
遗憾的是,这不起作用.我收到了这个错误
node_modules/mongoose/lib/document.js:1272
doc.save(handleSave);
^
TypeError: Object #<Object> has no method 'save'
Run Code Online (Sandbox Code Playgroud)
我已经尝试创建自己的自定义merge方法但仍然无法实现正确的合并:
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;
}
};
Run Code Online (Sandbox Code Playgroud)
有这种差异,我有这样的信息:
node_modules/mongoose/lib/document.js:1245
return self.getValue(i);
^
TypeError: Object #<Object> has no method 'getValue'
Run Code Online (Sandbox Code Playgroud)
结果,我无法扩展entity和req.body目的地的值updated.我想只有结构被复制了.有人请告诉我错误的地方.谢谢.
Mic*_*ael 10
我能够通过改变来解决这个_.merge来_.extend,然后调用直接保存在返回的结果findById,而不是变量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);
});
});
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3479 次 |
| 最近记录: |