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

pass variable to `mutation` apollographql server

我试图通过 apollo 的 javascript 客户端将变量传递给 mutation,但是,它总是 returns 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

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

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