如何填充嵌套的虚拟对象?

Posted

技术标签:

【中文标题】如何填充嵌套的虚拟对象?【英文标题】:How can I populate nested virtuals? 【发布时间】:2019-05-25 01:55:35 【问题描述】:

我有一个数据集合(匹配),其中一个虚拟属性引用另一个集合(名册)。 Collection(rosters) 引用了 collection(participants) 中的另一个虚拟属性。我已成功填充集合(名册)。但是,我无法填充集合(参与者)。

匹配


"_id": 
    "$oid": "5c1b99843a71d812af25b10d"
,
"type": "match",
"id": "0b0ad010-ee86-11e8-b29a-061fc5dc976c",
"relationships": 
    "rosters": 
        "data": [
            
                "type": "roster",
                "id": "8dc6f770-ee88-11e8-b755-9d41e8e54ecc"
            ,
            
                "type": "roster",
                "id": "8dc6f774-ee88-11e8-b755-9d41e8e54ecc"
            
        ]
    


名册

 "_id": 
    "$oid": "5c1b99843a71d812af25b151"
,
"type": "roster",
"id": "f51f1250-ee87-11e8-a185-711497405867",
"relationships": 
    "participants": 
        "data": [
            
                "type": "participant",
                "id": "f51f1251-ee87-11e8-a185-711497405867"
            ,
            
                "type": "participant",
                "id": "f51f1252-ee87-11e8-a185-711497405867"
            ,
            
                "type": "participant",
                "id": "f51f1253-ee87-11e8-a185-711497405867"
            
        ]
    

这是我目前所拥有的。

Match.find([])
  .populate(
    path: 'rosters',  // virtual
    populate: 
      path: 'participant', // virtual
      model: 'Participant'
    
  

我希望在我的匹配实例中有一个填充的参与者实例,但实际输出是:参与者:数据:[数组]。

【问题讨论】:

我想你把virtualsreference 搞错了! mongoose virtuals 不需要填充,并且信息不会存储在数据库中! @Mohsen:这是不正确的。在 mongoose 4.5 中添加了非常有用的“虚拟填充”功能。 谢谢你!我不知道! 【参考方案1】:

我现在无法对此进行测试,但您是否尝试过在第一个填充调用之后添加另一个填充调用或尝试像这样的嵌套填充调用:https://***.com/a/36659971/2856218?

【讨论】:

以上是关于如何填充嵌套的虚拟对象?的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB:如何使用查找查询填充嵌套对象?

如何使用游标和批量收集填充嵌套表(带有嵌套对象)

如何使用嵌套对象填充 Vue 下拉列表

如何在猫鼬中异步填充嵌套对象?

如何仅在猫鼬中使用聚合填充嵌套在对象数组中的字段?

如何使用嵌套的 json 对象填充 vue 条件库中的 vue 组件