Mongoose 预保存挂钩中的修改未持久化

Mongoose 预保存挂钩中的修改未持久化,mongoose,mongoose-schema,Mongoose,Mongoose Schema,我有一个模型,我在模式中使用pre-save钩子修改它。保存后,mongoose将返回修改后的数据,__v将更新,所有内容看起来都很漂亮。但是当我检索模型时,我的模型根本没有改变 这是我的源代码的精简版本: var schema = new Schema({ name: { type: String, required: true, }, version: { type: Number, required: false, }, versions

我有一个模型,我在模式中使用pre-save钩子修改它。保存后,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;
  })
我这样做是因为我需要将所有更改保留在特定版本中,以便人们可以加载特定版本的数据,但客户机不应该知道这些,只需要获取版本号和正确的元素


你能给我指出我的问题的正确方向吗,或者告诉我我做错了什么。非常感谢您的帮助。

完成后,您需要在回调结束时调用“next”函数:

next();