【发布时间】:2019-07-02 13:40:05
【问题描述】:
我在 GraphQL Playground 中有一个工作查询,我正在尝试使用 Apollo 开始工作。我似乎无法将变量正确传递给查询。
这是我的代码:
public render() {
const CONVERSATION = gql`
query GetConversation(
$conversationId: ConversationWhereUniqueInput!
) {
conversation(where: $conversationId) {
id
title
}
}
`
const conversationId: any = this.props.conversation
console.log(conversationId) // works.
return (
<ApolloProvider client={this.client}>
<div>
<Query query={CONVERSATION} variables={{ conversationId }}>
{({ loading, error, data }) => {
if (error) {
return <div>${JSON.stringify(error)}</div>
}
if (loading) {
return <div>Loading...</div>
}
return <div>{JSON.stringify(data)}</div>
}}
</Query>
</div>
</ApolloProvider>
)
}
我得到的错误信息是:
${"graphQLErrors":[],"networkError":{"name":"ServerError","response":{},"statusCode":400,"result":{"errors":[{"消息":"变量 \"$conversationId\" 获得无效值 \"cjrtfagwc00bq0a300njz594r\"; 预期类型 ConversationWhereUniqueInput 为对象。","locations":[{"line":1,"column":23}]} ]}},"message":"网络错误:响应不成功:收到状态码 400"}
[GraphQL 错误]:消息:变量“$conversationId”的值无效“cjrtfagwc00bq0a300njz594r”;预期类型 ConversationWhereUniqueInput 为对象。,位置:[object Object],路径:未定义
我认为通过将我的变量作为variables={{ conversationId }} 传递,我实际上是按照请求传递了一个对象。我做错了什么?
编辑 本杰帮我找出了问题所在。
我只需要将 const conversationId: any = this.props.conversation 更改为 const conversationId: any = { this.props.conversation }
【问题讨论】: