eag*_*gor 5 mongoose mongodb node.js
var post = mongoose.Schema({
...
_createdOn: Date
});
Run Code Online (Sandbox Code Playgroud)
我想_createdOn仅允许在创建文档时设置字段,并禁止在将来的更新中更改它.它是如何在Mongoose中完成的?
eag*_*gor 13
我通过_createdOn在模式的预保存挂钩中设置(仅在第一次保存时)来实现此效果:
schema.pre('save', function (next) {
if (!this._createdOn) {
this._createdOn = new Date();
}
next();
});
Run Code Online (Sandbox Code Playgroud)
......并禁止其他任何地方的变化:
userSchema.pre('validate', function (next) {
if (this.isModified('_createdOn')) {
this.invalidate('_createdOn');
}
next();
});
Run Code Online (Sandbox Code Playgroud)