【发布时间】:2018-12-21 11:46:22
【问题描述】:
我正在使用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
}
}
我说的对吗?有必要这样做吗?这种情况的最佳做法是什么?是否有任何文档可以教人们如何处理这个问题或告诉人们最佳实践?
【问题讨论】:
-
“巨大”查询有什么问题(实际上我认为它很小)?这就是最初发明 GraphQL 的原因。此外,Github 会很高兴您在单个查询中获得所需的数据 - 并且只有您需要的数据。如 Apollo 文档中所述,拆分查询有一些原因(例如,为了加快 UI 速度),但特别是在服务器到服务器的通信中,这种情况非常罕见。请重新考虑首先将它们分开。
-
您有没有找到合适的解决方案?如果没有相关的较小查询来重新获取较大查询的碎片部分,我看不出碎片如何帮助。
标签: graphql graphql-js github-graphql