【问题标题】:Mongoose: How to populate sub properties from within a schema's virtual propertiesMongoose:如何从模式的虚拟属性中填充子属性
【发布时间】:2019-05-28 08:33:43
【问题描述】:

我有一个使用 mongoose 定义的 mongodb 架构,并且我有一些嵌套在多个级别上的子文档。我希望能够在另一个模式的虚拟属性中访问这些(填充的)子文档,但我似乎不能这样做。我似乎能够访问第一级嵌套的文档,但不能更进一步。

这是我的架构示例:


const SchemaA = {
   name: {type: string}
   items: [
     {
      schemaB: {
       type: schema.type.ObjectId,
       ref: "B"
      }
     }
   ]
} 
const SchemaB = {
   name: {type: string}
   schemaC: {
       type: schema.type.ObjectId,
       ref: "C"
      }
}
const SchemaC = {
   types: [{label: {type: String}}]
}

我想要做的是从 SchemaA 上的虚拟属性中访问 SchemaC.types。

这是我想要实现的目标:


SchemaA.virtual("types").get(function(){
   return this.items.map(item => {
       return {name: item.schemaB.name, types: item.schemaB.SchemaC.types}
   })
})

从上面看,item.schemaB 似乎填充得很好,但item.schemaB.SchemaC 似乎只是 schemaC 的 objectId。

说实话,我不确定这是否可能,但我似乎无法在网上任何地方找到明确的答案,所以我希望这里的人能提供帮助。谢谢!

【问题讨论】:

    标签: mongodb mongoose mongoose-schema mongoose-populate


    【解决方案1】:

    所以在猫鼬中你需要使用populate 方法。

     .populate({
        path: 'schemaB',
        populate: {
          path: 'schemaC'
        }
      });
    

    mongoose populate

    【讨论】:

      猜你喜欢
      • 2019-02-27
      • 2015-08-08
      • 1970-01-01
      • 1970-01-01
      • 2021-04-29
      • 1970-01-01
      • 2016-04-30
      • 2014-09-04
      • 2014-10-27
      相关资源
      最近更新 更多