Graphql查询错误!变量已声明但从未使用过

穆罕默德·塔哈(Muhammad Talha)

我正在尝试根据搜索关键字获取Shopify产品。

我通过在查询中传递硬编码值来测试此查询,它可以正常工作,但我需要传递变量值,因此在这种情况下,它会给出一个错误

Grapghql查询错误searchKeyword已声明但未使用。

这里是我的查询来搜索产品的基础上titletagproduct_type

失败的案例:

export const searchProductsQuery = gql` query($searchKeyword: String!){
    shop {
        products(first: 10, query:"title:'$searchKeyword' OR tag:'$searchKeyword' OR product_type:'$searchKeyword'") {
            edges {
                cursor
                node {
                    id
                    title
                    handle
                    description
                    productType
                    images(first: 5) {
                        edges {
                            node {
                                id
                                src
                            }
                        }
                    }
                    variants(first: 5) {
                        edges {
                            node {
                                id
                                title
                                price
                            }
                        }
                    }
                }
            }
        }
    }
}`;

成功案例:

export const searchProductsQuery = gql` query{
shop {
     products(first: 10, query:"title:'games' OR tag:'games' OR product_type:'games'") {
    ...
};
丹尼尔·雷登(Daniel Rearden)

您为操作定义的变量就是变量。不能像模板文字占位符那样使用它们,这是您要尝试做的事情。

在GraphQL中,变量只能用作参数的输入。例如,query是带(非空)字符串的参数。因此,我们可以创建一个变量,例如$mySearchQuery,将其设置为"title:'games' OR tag:'games' OR product_type:'games'",然后像这样使用它:

products(query:$mySearchQuery)

如果您有一个javascript变量要用作的一部分$mySearchQuery,则可以$mySearchQuery使用模板文字来设置在javascript代码中传递的值

const options = {
  variables: {
    mySearchQuery: `title:'${keyword}' OR tag:'${keyword}' OR product_type:'${keyword}'`
  }
}

您会看到一个错误,该变量已声明并且从未使用过,因为从未使用过它-查询中对它的引用是字符串的一部分,因此将按字面意义进行解析。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

已声明但从未使用过的变量

组件已声明但从未使用过

声明的变量但从未使用过值错误

在try / catch块中避免警告“已声明变量但从未使用过变量”

Javascript“已声明变量但从未使用过” ...即使我正在使用它?

从 VS 构建输出中省略“变量 X 已声明但从未使用过”

Office React Fabric 事件已声明但从未使用过演示代码错误

C#警告:已分配变量但从未使用过

为什么编译器会给出错误而不是警告已分配但从未使用过其值的变量

函数内循环:已分配但从未使用过的局部变量

Unity3D C#/变量已分配但从未使用过(?)

声明了属性“平台”,但从未使用过

SBCL警告已定义变量但从未使用过

错误函数已声明但从未定义

@ typescript-eslint / eslint-plugin错误:定义了“路由”,但从未使用过(无未使用的变量)

Axios已定义但从未使用过

不能使用单个文件组件。“已注册但从未使用过”

为什么ReactJs会说“警告'counter:'已定义但从未使用过”而使用了变量?

ESLint:fromEvent已定义但从未使用过(无未使用的变量)

分配了变量,但从未使用过它的值(C#)

TypeScript ESLint错误地报告:“已定义函数,但从未使用过。”

vue + bulma选项卡错误:定义了“ openTab”,但从未使用过

错误 'count' 已定义但从未使用过 Vue.js

从未使用过变量优化

React-我的表单正在提交空数据,因为声明了“ e”和“ data”但从未使用过?

定义并用作方法参数的变量,但从未使用过值,因此获取ESLint未使用的变量

如何隐藏NVCC的“函数已声明但从未引用”警告?

警告怪异:已声明但从未读取其值

Room:警告:从未使用过参数/从未使用过变量