Mongoose Schema安全领域

时间:2012-11-25 20:29:30

标签: mongoose

简短明了:有没有办法阻止设置架构字段但允许获取值?

我一直在Mongoose Documentation,但找不到我要找的东西。

4 个答案:

答案 0 :(得分:14)

如果要设置永远不能更改的默认值,则可以选择

var schema = new Schema({
  securedField: {
    type: String,
    default: 'Forever',
    set: function (val) { return this.securedField; }
});

答案 1 :(得分:2)

将字段定义为virtual getter而不是传统字段。

例如,假设您希望在通过Mongoose访问时将集合的pop字段设为只读:

var schema = new Schema({
    city: String,
    state: String
});

schema.virtual('pop').get(function() {
    return this._doc.pop;
});

通过访问模型实例的私有_doc成员,将来可能会破坏,但是当我刚刚测试它时,这种方法很好。

答案 2 :(得分:0)

您只需从设置中返回与默认值相同的值即可,而无需引用_this文档:

{{1}}

答案 3 :(得分:0)

从猫鼬5.6开始,您可以:immutable: true

var schema = new Schema({
  securedField: {
    type: String,
    default: 'Forever',
    immutable: true
  }
});