Mongoose和Bluebird saveAsync实际上没有保存

时间:2016-02-17 19:32:17

标签: node.js mongodb express mongoose bluebird

我正在尝试更新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,记录未更新。

任何有关我能做些什么才能完成这项工作的想法都将不胜感激。谢谢!

0 个答案:

没有答案