使用 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 上提问就足够了 ;)