var post = mongoose.Schema({
...
_createdOn: Date
});
我想仅允许在创建文档时设置_createdOn
字段,并禁止在将来更新时更改它。它是如何在Mongoose中完成的?
答案 0 :(得分:13)
我通过在架构的预保存挂钩中设置_createdOn
来实现此效果(仅在首次保存时):
schema.pre('save', function (next) {
if (!this._createdOn) {
this._createdOn = new Date();
}
next();
});
......并禁止其他地方的变更:
userSchema.pre('validate', function (next) {
if (this.isModified('_createdOn')) {
this.invalidate('_createdOn');
}
next();
});
答案 1 :(得分:0)
检查这个答案:https://stackoverflow.com/a/63917295/6613333
您可以将该字段设为不可变。
var post = mongoose.Schema({
...
_createdOn: { type: Date, immutable: true }
});