使用 ApolloClient 将变量传递给 GraphQL 突变似乎不起作用
Posted
技术标签:
【中文标题】使用 ApolloClient 将变量传递给 GraphQL 突变似乎不起作用【英文标题】:Passing a variable to GraphQL mutation using ApolloClient doesn't seem to work 【发布时间】:2021-08-14 15:32:40 【问题描述】:我正在尝试弄清楚如何使用 Apollo 客户端运行突变。
这是我正在尝试运行的突变:
export const CREATE_POST = gql`
mutation CreatePost($title: String)
createPost(
title: $title
body: "Test body, whatever..."
)
title
body
slug
`
这是呈现表单的功能组件,并在我提交表单后尝试运行此突变:
export default function post()
const [createPost] = useMutation(CREATE_POST)
async function handleSubmit(event)
event.preventDefault()
const data = await createPost(
variables: title: "test title"
)
return (<rendering the form here>)
我收到一个错误:
[GraphQL 错误]:消息:类型为“String”的变量“$title”用于预期类型“String!”的位置。
如果我从这里删除$title
变量:mutation CreatePost($title: String)
,错误就会消失。似乎我没有将变量传递给它。但据我所知,这部分代码是正确的:
const data = await createPost(
variables: title: "test title"
)
这就是您应该将变量传递给突变的方式,对吧?我究竟做错了什么?我该如何调试?
组件的完整代码是here
查询码是here
【问题讨论】:
mutation CreatePost($title: String!)
- 与突变 arg 相同的类型(在 API 中读取)
@xadm 哦,这太完美了,非常感谢,你永远猜不到!
没什么好猜的,信息有误,解释了很多次
【参考方案1】:
感谢@xadm。
必须使用mutation CreatePost($title: String!)
而不是mutation CreatePost($title: String)
。
【讨论】:
以上是关于使用 ApolloClient 将变量传递给 GraphQL 突变似乎不起作用的主要内容,如果未能解决你的问题,请参考以下文章