我正在使用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
}
}
}
但是我认为从服务器查询大量数据是很糟糕的。
我有followers
和repositories
页。因此,我认为将大型查询拆分为小型查询会更好。
以下是一些小的查询:
关注者查询:
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
}
}
我正确吗?是否有必要这样做?这种情况下的最佳做法是什么?是否有任何文档可以教人们如何处理或告诉人们最佳实践?
答案 0 :(得分:0)
我找到了有关query splitting
的阿波罗文档:https://www.apollographql.com/docs/angular/recipes/query-splitting.html
答案 1 :(得分:0)
您可以将查询吐到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
}
}