只有在被要求时才能使用graphql获取深层嵌套对象的最佳方法是什么? 我在这里说 表现明智
假设你有以下mongo / mongoose架构:
User
|
|_ Name
|
|_ Friends (RefId into User)
|
|_ User
|
|_ Friends (RefId into User)
.....
假设每个用户都有很多朋友,而这些朋友又有很多其他朋友,
如何决定populate
函数内resolve
需要多深的程度?
“只是填充”的天真方法可能有害,因为许多查询可能只选择0级别的字段name
,但最终会填充数据库的1/2。
提前致谢。
答案 0 :(得分:1)
最好的方法是让GraphQL客户端指定它想要的嵌套数据的深度,即让客户端在询问用户的朋友时传递参数。
使用graphql
npm包,实现如下:
const UserType = new GraphQLObjectType({
name: 'NestedUser',
fields: {
...
...
friends: {
type: new GraphQLList(UserType),
args: {
level: {
type: GraphQLInt,
defaultValue: 0,
},
...connectionArgs,
},
resolve: (user, {level, ...args}) => {
// Populate nestedFriends according to the level
return nestedFriends;
},
},
},
});