GraphQL在一个请求中进行多个查询

Nik*_*oto 0 graphql

我在数据库中有一些由用户创建的组。每个组中都有多个成员。这是典型的小组的样子:

{
    "groupName": "some-group-name",
    "userIds": ["001", "002", "003"]
}
Run Code Online (Sandbox Code Playgroud)

我的数据库中还有一个单独的用户节点。这是用户的样子:

{
    "id": "001",
    "userName": "some-unique-username"
}
Run Code Online (Sandbox Code Playgroud)

我想列出每个组及其成员。因此,它将是:

  • 组1

    • user1 ID;user1名称;
    • user2 ID;user2名称;
  • 组2

    • user3 ID;user3名称;
    • user4 ID;user4名称;

等等...

怎么可能(如果有的话)获取这些组及其用户ID,并按ID查询用户并返回一个仅包含一个请求的,包含所有数据的JSON?

现在,我只是获取一些组并遍历userIds每个组,并分别为每个用户发送请求。我不是在问分页或简单查询,我只是想获取每个组以及这些组内的用户。

Nik*_*oto 5

我自己想通了。

我需要做的是创建一个单独的解析器来获取每个组的成员:

resolvers: {
    ...
    Group: {
        members: (group, _, context) => group.members.map(memberId => context.db.findUserById(memberId)
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

父组对象作为第一个参数传递给解析器,因此在查询时:

{
    groups(count: 10){
        name
        members {
            name
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它返回前10个组的名称及其成员的名称。