使用 Graphql 变量定义字段
Use Graphql variables to define fields
我正在尝试像这样有效地做某事
`query GetAllUsers($fields: [String]) {
users {
...$fields
}
}`
然后我的客户(目前是 Apollo for React)在变量部分传入一个字段数组。目标是能够为我想要返回的字段传递一个数组,并将其插入到适当的 graphql 查询中。当前 returns $fields 处的 GraphQL 语法错误(期望 { 但看到 $ )。这可能吗?我是不是用错了方法?
我考虑过的另一个选择是调用 JavaScript 函数并将结果传递给 query(),该函数将执行如下操作:
buildQuery(fields) {
return gql`
query {
users {
${fields}
}
}`
}
然而,这感觉像是一个不必要的解决方法。
评论汇总:
非标准要求需要变通办法 ;)
您可以使用片段(对于预定义的字段集),但它们可能不会是自由粒度的(字段级别)。
变量绝对不是用于查询定义的(而是用于查询中使用的变量)。
丹尼尔的建议:gql-query-builder
看来 graphQL 社区很棒,到处都是处理所有可能用例的人……搜索解决方案或在 SO 上提问就足够了 ;)
我正在尝试像这样有效地做某事
`query GetAllUsers($fields: [String]) {
users {
...$fields
}
}`
然后我的客户(目前是 Apollo for React)在变量部分传入一个字段数组。目标是能够为我想要返回的字段传递一个数组,并将其插入到适当的 graphql 查询中。当前 returns $fields 处的 GraphQL 语法错误(期望 { 但看到 $ )。这可能吗?我是不是用错了方法?
我考虑过的另一个选择是调用 JavaScript 函数并将结果传递给 query(),该函数将执行如下操作:
buildQuery(fields) {
return gql`
query {
users {
${fields}
}
}`
}
然而,这感觉像是一个不必要的解决方法。
评论汇总:
非标准要求需要变通办法 ;)
您可以使用片段(对于预定义的字段集),但它们可能不会是自由粒度的(字段级别)。
变量绝对不是用于查询定义的(而是用于查询中使用的变量)。
丹尼尔的建议:gql-query-builder
看来 graphQL 社区很棒,到处都是处理所有可能用例的人……搜索解决方案或在 SO 上提问就足够了 ;)