我有一个模型,我使用模式中的预保存挂钩进行修改。保存后,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;
})
我这样做是因为我需要保留特定版本中的所有更改,以便人们可以加载特定版本的数据,但客户端不应该知道这些,只需获取版本号和正确的元素
你能指出我的问题是正确的方向,还是告诉我我做错了什么。非常感谢任何帮助。
答案 0 :(得分:0)
完成后,您需要在回调结束时调用“下一个”功能:
next();