简短明了:有没有办法阻止设置架构字段但允许获取值?
我一直在Mongoose Documentation,但找不到我要找的东西。
答案 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
}
});