简洁明了:有什么方法可以防止设置模式字段但允许获取值?
我一直在Mongoose 文档中,但找不到我要找的东西。
如果您想设置一个永远不能更改的默认值,则另一种选择:
var schema = new Schema({
securedField: {
type: String,
default: 'Forever',
set: function (val) { return this.securedField; }
});
将字段定义为虚拟getter,而不是传统字段。
例如,假设您想pop
在通过 Mongoose 访问时将集合字段设为只读:
var schema = new Schema({
city: String,
state: String
});
schema.virtual('pop').get(function() {
return this._doc.pop;
});
通过访问模型实例的私有_doc
成员,这可能会在将来中断,但是当我刚刚测试它时它工作得很好。
从 mongoose 5.6 开始,您可以执行以下操作:immutable: true
var schema = new Schema({
securedField: {
type: String,
default: 'Forever',
immutable: true
}
});
您可以从设置中返回与默认值相同的值,无需参考 _this 文档:
var schema = new Schema({
securedField: {
type: String,
default: 'Forever',
set: () => 'Forever'
});