使用Graphql变量定义字段

时间:2019-06-01 17:04:39

标签: graphql apollo react-apollo graphql-js

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

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

然后我的客户(当前为Apollo进行响应)在变量部分的字段数组中传递。目标是能够为我想要返回的字段传递一个数组,并将其插值到适当的graphql查询。当前,这会在$ fields返回GraphQL语法错误(期望{却看到$)。这有可能吗?我是用错误的方式来处理这个问题吗?

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

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

但是,这似乎是一个不必要的解决方法。

1 个答案:

答案 0 :(得分:1)

评论摘要:

非标准要求要求解决方法;)

您可以使用片段(用于预定义的字段集),但是它们可能不会随便散布(字段级别)。

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


丹尼尔(Daniel)的建议:gql-query-builder


它表明graphQL社区很棒,并且有很多人在处理所有可能的用例……就足以找到解决方案或提出SO了;)