我正在尝试更新Mongo DB中的现有记录,虽然“save”成功完成,但DB中的记录实际上并未更新。这是数据之前的一个:
在:
{
_id: '56be4ba9938e836b6f47e84a',
type: 'ec-input',
key: 'ec-input_2',
templateOptions: {
placeholder: 'My Placeholder...',
subtext: 'My Subtest',
label: 'My Label'
},
order: 1,
form: '56bd3e76413de7c862979b8c',
__v: 0
}
之后:
{
_id: '56be4ba9938e836b6f47e84a',
type: 'ec-input',
key: 'ec-input_2',
templateOptions: {
placeholder: 'I am different now!!',
subtext: 'Me too..',
label: 'My Label'
},
order: 1,
form: '56bd3e76413de7c862979b8c',
__v: 0
}
templateOptions
字段在mongoose模型上配置为类型mongoose.Schema.Types.Mixed
。以下是我试图保存更新的方法:
export function update(req, res) {
if (req.body._id) {
delete req.body._id;
}
Field.findByIdAsync(req.params.id)
.then(entity => {
var updated = _.merge(entity, req.body);
updated.saveAsync()
.spread(updated => {
if (entity) {
res.status(200).json(entity);
}
});
});
}
我在调用updated.saveAsync
之前设置了断点,updated
正确地具有修改后的数据。我还在spread
回调中设置了断点,updated
仍然包含已修改的数据。 updated.saveAsync
完成后,我直接检查mongo,记录未更新。
任何有关我能做些什么才能完成这项工作的想法都将不胜感激。谢谢!