如何使用SailsJS填充嵌套的相关集合?

时间:2015-10-26 04:57:49

标签: javascript node.js sails.js

我有3个收藏品,

Users

Clan,其中包含许多Clanmembers

Clanmembers,其中包含许多Users

所以当我做的时候

Clan.find().populate('clanmembers');

它工作正常并返回结果,但后来我得到了类似的东西:

{ clanmembers:
   [ { role: 'Entry',
       owner: 2,
       member: 2,
       id: 1,
       createdAt: null,
       updatedAt: null } ],
  owner:
   { username: 'tester',
     email: 'tester',
     about: 'This is\n\na test hello\n\n\n\n\n\n\n\n\nhiiii',
     profileurl: '',
     avatar: 'asd.jpg',
     rank: '1',
     id: 2,
     createdAt: '2015-10-25T10:15:20.000Z',
     updatedAt: '2015-10-25T21:31:47.000Z' },
  clanname: 'testset',
  clantag: 'testin',
  id: 2,
  createdAt: '2015-10-26T01:07:02.000Z',
  updatedAt: '2015-10-26T01:07:02.000Z' }

我还希望能够populate clanmembers数组的owners以便我可以获取用户名以及不属于该组的人,如何填充此嵌套阵列?或者它是不可能的,我将不得不通过他们的ID循环/找到每一个。任何信息都会非常好,谢谢。

1 个答案:

答案 0 :(得分:2)

目前无法做到这一点,虽然已经在talks已经有一段时间了。

正如您所提到的,您必须手动完成填充。但是你可以避免为每个子文档单独调用。

我通常做的是在数组中收集所需的id并对数据库运行单个查询,然后维护一个id到文档的地图,这使得在多个地方使用它非常方便。