【问题标题】:modifing in a pre-save hook not persisted在预保存钩子中修改不持久
【发布时间】:2017-06-08 01:47:23
【问题描述】:

我有一个模型,我使用架构中的预保存挂钩进行了修改。保存后,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;
  })

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

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

【问题讨论】:

    标签: mongoose mongoose-schema


    【解决方案1】:

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

    next();
    

    【讨论】:

      猜你喜欢
      • 2018-01-14
      • 2023-04-09
      • 2018-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-03
      • 2019-06-15
      • 2013-10-28
      相关资源
      最近更新 更多