我正在尝试通过 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
答案 0 :(得分:1)
您需要确保您的查询(包括突变)与 SDL 中所述的内容相同(具有相同的变量)
如果您使用的是 Strapi,则存在一个错误,其中 ID
类型的参数必须指定为 $id
不能是其他东西,不确定它是如何变成这样的,但如果您发现不应该出现的 400 错误,请尝试检查是否有任何 ID
类型声明不完全为 $id
,希望对某人有帮助