graphql - 使用 Graphql 变量定义字段
问题描述
我正在尝试有效地做这样的事情
`query GetAllUsers($fields: [String]) {
users {
...$fields
}
}`
然后我的客户(目前是 Apollo for react)在变量部分中传入一个字段数组。目标是能够为我想要返回的字段传入一个数组,并将其插入到适当的 graphql 查询中。这当前在 $fields 处返回 GraphQL 语法错误(期望 { 但看到 $ )。这甚至可能吗?我是以错误的方式接近这个吗?
我考虑过的另一个选项是调用 JavaScript 函数并将结果传递给 query(),该函数将执行以下操作:
buildQuery(fields) {
return gql`
query {
users {
${fields}
}
}`
}
然而,这感觉像是一种不必要的解决方法。
解决方案
评论摘要:
非标准要求需要变通方法;)
您可以使用片段(用于预定义的字段集),但它们可能不会是自由粒度的(字段级别)。
变量绝对不是用于查询定义(而是用于查询中的变量)。
丹尼尔的建议:gql-query-builder
它表明graphQL社区很棒,并且有很多人在研究所有可能的用例……搜索解决方案或询问SO就足够了;)
推荐阅读
- java - 将jar转换为exe时Java 16 jre版本问题
- grafana - 执行数据转换后保留变量名称
- session - 如果授权过期,防止用户丢失他们输入到 DotNet Core 3.1 MVC 视图中的数据
- angular - core.js:10101 NG0303:无法绑定到“matCellDefOf”,因为它不是“td”的已知属性
- vue.js - 如何将 setter 值应用于计算属性 vuejs
- python - Pandas 和对按值传递和按引用传递的混淆
- vb.net - VB.net 程序中的多语言
- jsf - JSF h:commandButton 在 h:DataTable 中不起作用
- python - 在 Python 的类中定义一个 setter?
- c++ - C++ 程序如何为数组分配内存?(不是动态的)