Mongoose:禁止更新特定字段

7
var post = mongoose.Schema({
    ...
    _createdOn: Date
});

我希望在文档创建时允许设置_createdOn字段,但不允许在将来的更新中更改它。在Mongoose中如何实现这个功能?


请查看http://docs.mongodb.org/manual/reference/operator/update/setOnInsert/。 - arun
2个回答

15
我通过在模式的预保存钩子中设置_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();
});

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接