graphql,将大型查询拆分为小型查询



我正在使用https://developer.github.com/v4/

我有这样一个巨大的疑问:

query ($login: String!, $first: Int, $after: String) {
user (login: $login){
avatarUrl
login
name,
followers(first: $first, after:$after) { 
edges{
cursor
node{
id
name
login
avatarUrl
}
}
totalCount
},
repositories(first: $first) {
edges{
cursor
node{
id
name
}
}
totalCount
}
}
}

但我认为从服务器查询大量数据是不好的。

我有followersrepositories页面。因此,我认为将这个巨大的查询拆分为小查询更好。

以下是一些小查询:

追随者查询:

query($login: String!, $first: Int, $after: String) {
user(login: $login) {
followers(first: $first, after: $after) {
edges {
cursor
node {
id
name
login
avatarUrl
}
}
totalCount
}
}
}

存储库查询:

query($login: String!, $first: Int, $after: String) {
user(login: $login) {
repositories(first: $first, after: $after) {
nodes {
id
name
}
totalCount
}
}
}

用户查询:

query($login: String!, $first: Int) {
user(login: $login) {
avatarUrl
login
name
}
}

我说得对吗?有必要这样做吗?在这种情况下最好的做法是什么?有没有任何文件可以教人们如何处理这个问题,或者告诉人们最佳实践?

您可以将查询插入Fragments,这样您仍然只触发一个请求,并且具有较小的"queries"。类似这样的东西:

追随者片段:

fragment followers on User {
followers(first: $first, after: $after) { 
edges{
cursor
node{
id
name
login
avatarUrl
}
}
totalCount
},
}

存储库片段:

fragment repositories on User {
repositories(first: $first) {
edges{
cursor
node{
id
name
}
}
totalCount
}
}

将它们放在一起进行查询:

query ($login: String!, $first: Int, $after: String) {
user (login: $login){
avatarUrl
login
name
...followers
...repositories
}
}

最新更新