Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graphql 将变量传递给'mutation'HQL服务器_Graphql_Apollo_React Apollo_Strapi - Fatal编程技术网

Graphql 将变量传递给'mutation'HQL服务器

Graphql 将变量传递给'mutation'HQL服务器,graphql,apollo,react-apollo,strapi,Graphql,Apollo,React Apollo,Strapi,我试图通过apollo的javascript客户端将变量传递给mutation,但是,它总是返回400错误:[错误:响应未成功:收到状态代码400],这表明我的查询有问题 以下是我的疑问: const SET_ADDRESS_LASTUSED = gql` mutation UpdateAddress($phone: String!, $name: String!) { updateAddress(input: { where: { phone: $pho

我试图通过apollo的javascript客户端将变量传递给
mutation
,但是,它总是返回400错误:
[错误:响应未成功:收到状态代码400]
,这表明我的查询有问题

以下是我的疑问:

const SET_ADDRESS_LASTUSED = gql`
  mutation UpdateAddress($phone: String!, $name: String!) {
    updateAddress(input: {
      where: {
        phone: $phone
      },
      data: {
        name: $name
      }
    }) {
      address {
        name
        phone
      }
    }
  }
`;
我这样称呼突变:

const [updateLastUsed, updateLastUsedResult] = useMutation(SET_ADDRESS_LASTUSED);

          // sometime later,
          updateLastUsed({
            variables: {
              phone: "+12345678910",
              name: "WhyICanNotChangeMyName?",
            },
          });
有什么我没有注意到的错误吗?如果我像这样硬编码变量,我可以成功地进行变异,但当然,我不能这样做

const SET_ADDRESS_LASTUSED = gql`
  mutation {
    updateAddress(input: {
      where: {
        phone: "+12345678910"
      },
      data: {
        name: "ICanChangeMyName!"
      }
    }) {
      address {
        name
        phone
      }
    }
  }
`;
请帮忙。我已经毫无意义地调试了几个小时。。。我始终可以使用类似的方式将变量传递给
query
:(

顺便说一句,我使用的是Strapi服务器

提前谢谢

参考:

您需要确保您的查询(包括变异)与SDL中所述的相同(具有相同的变量)


如果您使用的是Strapi,则会出现一个错误,
ID
类型的参数必须指定为
$ID
不能是其他的,不确定它是如何变成这样的,但是如果您发现400个错误,请尝试检查是否有任何
ID
类型声明与
$ID
不完全相同,希望它能帮助某人您可以使用“查询变量”在graphiql中测试突变……在js中准备完整的
input
,并作为变量传递谢谢!但是如何声明
input
param?
($input:JSON!)
似乎不起作用..相同的400错误?阅读API规范,必须匹配声明Hey@xadm非常感谢您的指导!!即使最初不清楚,因为我是新手,您的评论真的很有帮助!我从来没有想过它会像SDL中所述的那样。
UpdatedDressInput
如果API输入id中的类型是
id!
那么这个id必须声明为
$id:id!
,而不是
$id:id
@xadm您知道为什么它必须是
$id:id!
而不是
$addressId:id!
,这太奇怪了,应该只是参数名,但它会导致它崩溃?…它应该像
$startedNameVariableCanBeAnything
只是va的名称一样工作变量,动态部分,仅在解析步骤(shopify特定要求?)定义字典元素“consumed”…输入名称(someInputId:$someVariableId的左侧部分)必须与查询“body”中“consuming part”上的(API定义的输入名称)匹配