首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >GraphQL:嵌套查询与根查询

GraphQL:嵌套查询与根查询
EN

Stack Overflow用户
提问于 2019-01-04 01:06:39
回答 2查看 4K关注 0票数 7

我在我的服务器上使用Apollo,并且我正在尝试设计我的GraphQL GraphQL。我遇到的一个问题是,我是否应该更喜欢嵌套查询而不是根查询。

让我们在当前用户me具有多个invitations的示例中检查这两种方法。

根目录查询

代码语言:javascript
复制
me {
    id
    name
}

invitations {
    id
    message
}

invitations的解析程序返回当前用户的邀请。

嵌套查询

代码语言:javascript
复制
me {
    id
    name
    invitations {
        id
        message
    }
}

除了使用后一种方法将邀请嵌套在用户对象me中之外,这些方法应该可以实现相同的结果。但我担心的是,在保持缓存一致性方面,这是否能与Apollo客户端顺利地协同工作。

设计GraphQL查询的推荐方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-07 05:33:39

我要说的是,这真的取决于具体情况。就我个人而言,我将嵌套属性视为上下文:如果API使用者想要获取我的通知,那么它就是me { notifications { ... } },而不是notifications { ... }。如果有一个顶级的键是有意义的,例如,有一个全局通知的概念(不依赖于用户),那么就去做吧。如果每个用户都有自己的通知(我假设这是真的),那么User类型的me就应该有它,就像每个User一样。这种泛化鼓励可重用的思考:在管理面板中,使用user(id: ...) { ... }而不是me { ... },可以免费使用相同的UI代码。

根据经验,最好考虑使用该API,而不是提供它。

票数 5
EN

Stack Overflow用户

发布于 2019-01-04 01:34:43

GraphQL的卖点之一是允许客户端在最少的请求数量中灵活地定义他们想要查询的数据的形状。它们还鼓励开发人员在设计模式时使用"Think in Graphs“。

因此,我会选择看起来更像图的嵌套查询。此外,它的灵活性更高。如果用户想要在他们的邀请中获得他们的用户配置文件数据,他们可以只在一个请求中获得它们。如果他们只想获取配置文件数据,则只需忽略查询中的邀请部分,并且由于GraphQL的设计性质,服务器将不会浪费任何资源来获取邀请数据。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54026744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档