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

Graphql query error ! variable is declared but never used(GraphQL查询错误!变量已声明但从未使用过)
本文介绍了GraphQL查询错误!变量已声明但从未使用过的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

GRapghql查询错误搜索关键字已声明,但未使用。

以下是我根据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'") {
    ...
};

推荐答案

您为操作定义的变量只是--变量。它们不能像模板文字占位符一样使用,而这正是您正在尝试执行的操作。

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

products(query:$mySearchQuery)

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

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

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

这篇关于GraphQL查询错误!变量已声明但从未使用过的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Update another component when Formik form changes(当Formik表单更改时更新另一个组件)
Formik validation isSubmitting / isValidating not getting set to true(Formik验证正在提交/isValiating未设置为True)
React Validation Max Range Using Formik(使用Formik的Reaction验证最大范围)
Validation using Yup to check string or number length(使用YUP检查字符串或数字长度的验证)
Updating initialValues prop on Formik Form does not update input value(更新Formik表单上的初始值属性不会更新输入值)
password validation with yup and formik(使用YUP和Formick进行密码验证)