我的数据库中有一些用户创建的组。每个组中都有多个成员。这就是一个典型的群体:
{
"groupName": "some-group-name",
"userIds": ["001", "002", "003"]
}
我的数据库中还有一个单独的用户节点。这就是用户的样子:
{
"id": "001",
"userName": "some-unique-username"
}
我想列出每个组及其成员。所以,它将是:
1组
组2
依旧......
如何获取这些组及其用户ID并通过id查询用户并返回包含所有数据的单个JSON只有一个请求?(/ p>)
现在我只是抓取一些数量的组并迭代每个组的userIds
并分别向每个用户发送请求。
我不是在询问分页或简单的查询,我只想让每个小组和这些小组中的用户。
答案 0 :(得分:3)
自己想出来。
我需要做的是创建一个单独的解析器来获取每个组的成员:
resolvers: {
...
Group: {
members: (group, _, context) => group.members.map(memberId => context.db.findUserById(memberId)
}
...
}
父组对象作为第一个参数传递给解析器,因此当我查询:
时{
groups(count: 10){
name
members {
name
}
}
}
它返回前10个组的名称及其成员'名。
答案 1 :(得分:1)
使用以下架构
type User {
name: String
firstName: String
location: String
}
type Group {
groupname:String!
users:[User!]
}
type Query {
groups:[Group!]
group(name: String): Group
}
以下查询:
{
groups
{
groupname
users {
name
firstName
location
}
}
}
可以返回
{
{ name: "group1",
users: [{name:"user1", firstName:"firstName1", location:"Localtion1"},
{name:"user2", firstName:"firstName2", location:"Localtion2"}]
},
{ name: "group2",
users: [{name:"user1", firstName:"firstName1", location:"Localtion1"}]
},
...etc..
}
希望这有帮助,