如何在graphql查询中重用fiedls

如何在graphql查询中重用fiedls,graphql,graphql-js,react-apollo,Graphql,Graphql Js,React Apollo,我知道如何使用片段,我现在的问题是片段只能在类型的查询/突变中使用 例如 我想我要寻找的是类似于片段,但更一般 我有一个PersonBrowseQuery、EventsBrowseQuery、BookmarkBrowseQuery等,它们都有一个包含分页数据的元字段 meta { total per_page current_page etc. } 是否可以将其考虑为可重用的内容?您的元字段是一种类型,因此您仍然可以使用片段: const metaFragment

我知道如何使用片段,我现在的问题是片段只能在类型的查询/突变中使用

例如

我想我要寻找的是类似于片段,但更一般

我有一个PersonBrowseQuery、EventsBrowseQuery、BookmarkBrowseQuery等,它们都有一个包含分页数据的元字段

meta {
  total
  per_page
  current_page  

  etc.    
}

是否可以将其考虑为可重用的内容?

您的元字段是一种类型,因此您仍然可以使用片段:

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
在本例中)匹配即可或者,如果您有一些不一定是片段的共享字段,并且希望尽可能保持干燥,则可以使用普通模板文字:

const sharedFields = `
  bar
  baz
  qux
`
const usersQuery = gql`
  query getFoo {
    foo {
      ${sharedFields}
      # other fields
    }
  }
}`
const sharedFields = `
  bar
  baz
  qux
`
const usersQuery = gql`
  query getFoo {
    foo {
      ${sharedFields}
      # other fields
    }
  }
}`