我在模型架构上有limit
和count
。一旦这两个值相等,我希望布尔值reachedLimit
变为真。有没有办法在模型中自动计算,或者我是否需要手动计算?
我尝试了下面的代码,它总是返回true
。即使它按预期返回false,我认为它会在创建时为reachedLimit
分配一个默认值,然后永远不会重新赋值。在模型上动态检查相等性的最佳方法是什么?
const invitationSchema = new Schema({
limit: { type: Number, default: 1 },
count: { type: Number, default: 0 },
reachedLimit: { type: Boolean, default: {
$eq: ['$limit', '$count'],
} },
});
答案 0 :(得分:1)
您可以在架构中添加reachedLimit
作为virtual来执行此操作:
const invitationSchema = new Schema({
limit: { type: Number, default: 1 },
count: { type: Number, default: 0 }
});
invitationSchema.virtual('reachedLimit').get(function() {
return this.limit === this.count;
});
顾名思义,这实际上并不会将字段添加到保存的文档中,而是在查询文档时作为附加属性生成。