node.js - Mongoose :不允许更新特定字段

标签 node.js mongodb mongoose

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

我希望仅在创建文档时允许设置 _createdOn 字段,并且不允许在未来更新时更改它。在 Mongoose 中是如何实现的?

最佳答案

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

关于node.js - Mongoose :不允许更新特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26342081/

相关文章:

ruby - Mongoid::Errors::DocumentNotFound is raised even after rescuing

javascript - 如何打印 MongoDB 数组中嵌入文档的值?

node.js - Mongoose 是否可以自动从 Mongodb 中提取模式?

node.js - 暂停 cassandra 流以进行异步操作

node.js - Node js 中嵌套异步 mongoDB 调用

C# Mongodb 多对象数组文档的笛卡尔积

javascript - MongoDB,聚合 $match 不适用于 ObjectId

typescript 异步/等待无法确定正确的返回类型

node.js - 您实际上如何在 nodejs 中运行 scalajs 代码?

html - 不能使用 webrtc.io 包;浏览器上的 JavaScript 错误