Mongoose 预保存挂钩中的修改未持久化
我有一个模型,我在模式中使用pre-save钩子修改它。保存后,mongoose将返回修改后的数据,__v将更新,所有内容看起来都很漂亮。但是当我检索模型时,我的模型根本没有改变 这是我的源代码的精简版本: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
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();