graphql,将大型查询拆分为小型查询
我正在使用 我有一个巨大的疑问,像这样:graphql,将大型查询拆分为小型查询,graphql,graphql-js,github-graphql,Graphql,Graphql Js,Github Graphql,我正在使用 我有一个巨大的疑问,像这样: query ($login: String!, $first: Int, $after: String) { user (login: $login){ avatarUrl login name, followers(first: $first, after:$after) { edges{ cursor node{ id name
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
}
}
}
但我认为从服务器查询大量数据是不好的
我有追随者
和存储库
页面。所以我认为将这个大查询拆分为小查询更好
以下是一些小问题:
关注者查询:
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
}
}
我说得对吗?有必要这样做吗?在这种情况下,最好的做法是什么?有没有任何文档可以教人们如何处理这个问题,或者告诉人们最佳实践?我找到了阿波罗关于查询拆分的文档:您可以将查询吐入其中,这样您仍然只会触发一个请求,并且有更小的查询。大概是这样的: 追随者片段:
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
}
}
“大”查询有什么问题(实际上我认为它很小)?这就是GraphQL最初被发明的原因。Github也会很高兴,您可以在一次查询中获得所需的数据,并且只获得所需的数据。如Apollo文档中所述,拆分查询有一些原因(例如,为了加速UI),但特别是在服务器到服务器的通信中,这种情况非常罕见。首先,请重新考虑将它们分开。你有没有找到合适的解决方案?如果没有相关的较小查询来重新提取较大查询中的片段部分,我看不出片段有什么帮助。