我有a
属性总是等于1的架构。我找到了一个解决方案,但我不喜欢它:
var schema = new Schema({
a: Number
});
schema.pre('save', function(){
this.a = 1;
});
如果有更好的方法可以告诉我吗?例如:
var schema = new Schema({
a: 1
});
答案 0 :(得分:3)
如何使用默认值,它能达到你想要的效果吗?
var schema = new Schema({
a: {type: Number, default: 1}
});
如果你想强制它,pre
版本是最好的选择。
答案 1 :(得分:1)
实现此目的的另一种方法是使用virtual property。虚拟是您可以获取和设置的文档属性,但不会持久保存到MongoDB。相反,您可以指定每次访问a
属性时调用的getter函数:
schema.virtual('a').get(function () {
return 1;
});
现在,schema
的每个文档的属性a
都等于1
。但请注意,由于虚拟内容未被持久化,因此您无法查询它们。
答案 2 :(得分:1)
将常量存储为模型属性。
[[1, 1, 1]] # terms
[[1, 1, 2]] # twos
[1, 1, 2] # terms
答案 3 :(得分:0)
也许为时已晚,但是对于将来,您可以将默认值与自定义设置器一起使用,该设置器始终返回旧值,例如...
var schema = new Schema({
a: {
type: Number,
default: 1,
set(value) {
return this.a;
},
}
});
default
选项将初始化字段,而自定义设置器将忽略任何新值,并始终将字段重置为其先前值(您使用默认设置)。