mongoose:禁止更新特定字段

时间:2014-10-13 14:12:24

标签: node.js mongodb mongoose

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

我想仅允许在创建文档时设置_createdOn字段,并禁止在将来更新时更改它。它是如何在Mongoose中完成的?

2 个答案:

答案 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 }
});