在预保存挂钩中修改不会持久化

时间:2017-06-07 10:19:49

标签: mongoose mongoose-schema

我有一个模型,我使用模式中的预保存挂钩进行修改。保存后,mongoose返回修改后的数据,__ v更新,一切看起来都很花哨。但是当我检索模型时,我的模型根本没有改变......

这是我的源代码的精简版:

var schema = new Schema({
  name: {
    type: String,
    required: true,
  },
  version: {
    type: Number,
    required: false,
  },
  versions: {
    type: Object,
    required: false,
  },
  elements: {
    type: Array,
    required: false,
  },
})
  .pre('save', function(next) {
    version = Object
      .keys(this.versions)
      .map(function(key) { return parseInt(key); })
      .sort(function(a, b) { return a - b; })
      .reverse()[0] + 1;
    if (isNaN(version)) {
      version = 1;
    }

    this.versions[version] = {
      createdAt: new Date(),
      elements: this.elements.slice(),
    };
    this.elements = null;
  })

我这样做是因为我需要保留特定版本中的所有更改,以便人们可以加载特定版本的数据,但客户端不应该知道这些,只需获取版本号和正确的元素

你能指出我的问题是正确的方向,还是告诉我我做错了什么。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

完成后,您需要在回调结束时调用“下一个”功能:

next();