将变量传递给 `mutation` apollographql 服务器

时间:2020-12-22 17:19:47

标签: graphql apollo react-apollo strapi

我正在尝试通过 apollo 的 javascript 客户端将变量传递给 mutation,但是它总是返回 400 错误:[Error: Response not successful: Received status code 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 服务器

提前致谢!

参考: https://www.apollographql.com/docs/react/api/react/hooks/ https://strapi.io/documentation/developer-docs/latest/plugins/graphql.html#graphql

1 个答案:

答案 0 :(得分:1)

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

如果您使用的是 Strapi,则存在一个错误,其中 ID 类型的参数必须指定为 $id 不能是其他东西,不确定它是如何变成这样的,但如果您发现不应该出现的 400 错误,请尝试检查是否有任何 ID 类型声明不完全为 $id,希望对某人有帮助