首页 > 解决方案 > 使用 Graphql 变量定义字段

问题描述

我正在尝试有效地做这样的事情

`query GetAllUsers($fields: [String]) {
    users {
        ...$fields
    }
}`

然后我的客户(目前是 Apollo for react)在变量部分中传入一个字段数组。目标是能够为我想要返回的字段传入一个数组,并将其插入到适当的 graphql 查询中。这当前在 $fields 处返回 GraphQL 语法错误(期望 { 但看到 $ )。这甚至可能吗?我是以错误的方式接近这个吗?

我考虑过的另一个选项是调用 JavaScript 函数并将结果传递给 query(),该函数将执行以下操作:

buildQuery(fields) {
    return gql`
        query {
                users {
                    ${fields}
                }   
        }`
}

然而,这感觉像是一种不必要的解决方法。

标签: graphqlapolloreact-apollographql-js

解决方案


评论摘要:

非标准要求需要变通方法;)

您可以使用片段(用于预定义的字段集),但它们可能不会是自由粒度的(字段级别)。

变量绝对不是用于查询定义(而是用于查询中的变量)。


丹尼尔的建议:gql-query-builder


它表明graphQL社区很棒,并且有很多人在研究所有可能的用例……搜索解决方案或询问SO就足够了;)


推荐阅读