如何重用graphql查询中的字段
Posted
技术标签:
【中文标题】如何重用graphql查询中的字段【英文标题】:How to reuse fiedls in graphql queries 【发布时间】:2018-02-07 10:58:05 【问题描述】:我知道如何使用片段,我现在的问题是片段只能在类型的查询/突变中使用。
例如。
paginationFragment on Person
我想我正在寻找的内容类似于片段,但更一般。
例如。我有一个 PersonBrowseQuery、EventsBrowseQuery、BookmarkBrowseQuery 等。都有一个包含我的分页数据的元字段
meta
total
per_page
current_page
etc.
是否有可能将其归结为可重复使用的东西?
【问题讨论】:
【参考方案1】:您的元字段是一种类型,因此您仍然可以为它使用片段:
const metaFragment = gql`
fragment MetaFields on MetaType
total
per_page
current_page
# other fields
`
然后它可以作为使用模板文字占位符语法包含在您的查询中:
const usersQuery = gql`
query getUsers
users
meta
...MetaFields
# other fields
$metaFragment
`
只要确保片段的名称(本例中为MetaFields
)匹配即可。 或者,如果您有一些不一定是片段的共享字段,并且您希望尽可能保持 DRY,则可以使用纯模板文字:
const sharedFields = `
bar
baz
qux
`
const usersQuery = gql`
query getFoo
foo
$sharedFields
# other fields
`
【讨论】:
对于第二个选项,我得到了这个错误:String interpolation is not allowed in graphql tag:
以上是关于如何重用graphql查询中的字段的主要内容,如果未能解决你的问题,请参考以下文章
Apollo Client Angular:如何将从查询中获得的数据作为参数传递给graphql中的另一个查询?
如何对 Hasura 中的 ARRAY 字段类型运行 GraphQL 过滤器查询?
如何在graphql中获取响应中的所有字段而不在查询中传递任何字段名称
如何使用字段作为来自一个 graphql 查询的过滤器来获取位于单独查询中的流体图像?