动态地将所需字段传递到GraphQL查询中

动态地将所需字段传递到GraphQL查询中,graphql,react-apollo,graphql-js,Graphql,React Apollo,Graphql Js,我有一个查询,查询中的必填字段可能会更改。允许用户动态生成查询,用户可以选择查询中的字段。是否有一种方法可以根据用户从下拉列表中的选择将所需字段传递到查询中。例如:在下面的查询id中,Traveler、visaApplication可以替换为任何其他字段。所以我的查询必须是动态的 { Travels{ id traveller { nationality firstName } visaApplication

我有一个查询,查询中的必填字段可能会更改。允许用户动态生成查询,用户可以选择查询中的字段。是否有一种方法可以根据用户从下拉列表中的选择将所需字段传递到查询中。例如:在下面的查询id中,Traveler、visaApplication可以替换为任何其他字段。所以我的查询必须是动态的

{
    Travels{
      id
      traveller {
        nationality
        firstName
      }
      visaApplication {
        nationality
        city
      }
    }
  }

可以使用字符串插值动态添加字段:

const otherFields = `
  traveller {
    nationality
    firstName
  }
`
const query = gql`
  {
    Travels {
      id
      ${otherFields}
    }
  }
`
您还可以利用
@skip
@include
指令以及变量来控制在使用单个查询时是否跳过/包括特定请求的特定字段:

const query = gql`
  query (
    $includeTraveller: Boolean!
    $includeVisa: Boolean!
  ) {
    Travels {
      id
      traveller @include(if: $includeTraveller) {
        nationality
        firstName
      }
      visaApplication @include(if: $includeVisa) {
        nationality
        city
      }
    }
  }
`