首页 > 解决方案 > Mongoose:依赖于其他虚拟属性的虚拟属性

问题描述

在猫鼬中,是否有可能拥有一个依赖于另一个虚拟属性的虚拟属性?例如:如果我有属性squaresAmnttrianglesAmntappleAmntpearAmnt(均为 Number 类型),然后创建两个虚拟属性:

mySchema.virtual('totalShapes').get(function() {
  return this.squaresAmnt + this.trianglesAmnt;
});

mySchema.virtual('totalFruit').get(function() {
  return this.appleAmnt + this.pearAmnt;
});

total是否可以单独使用 4 个属性的总和来创建第三个虚拟属性totalShapes + totalFruit?对于我非常具体的用例,我想避免后者。

标签: mongodbmongoose

解决方案


是的,您可以参考它们,this.例如。this.totalShapes.

需要注意的一件事 - 如果编写查询的人使用 $select 您的虚拟机所依赖的字段可能不存在;查询未返回的字段对虚拟对象不可用。所以要防御并检查虚拟实现中所需的字段。


推荐阅读