预期类型变量是使用 Apollo 的对象
Posted
技术标签:
【中文标题】预期类型变量是使用 Apollo 的对象【英文标题】:Expected type variable to be an object using Apollo 【发布时间】: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
【问题讨论】:
【参考方案1】:您正在传递变量:
"conversationId": "cjrtfagwc00bq0a300njz594r"
这很好。问题是您的查询被定义为声明conversationId
变量(您已给出字符串(或ID
?)值"cjrtfagwc00bq0a300njz594r"
)应该是ConversationWhereUniqueInput
(这是一个输入对象):
$conversationId: ConversationWhereUniqueInput!
这两种类型(ID
和ConversationWhereUniqueInput
)不兼容。
鉴于您的变量命名,我怀疑您想更改 GraphQL 查询,以便将 conversationId
属性作为 where
参数的一部分传递:
query GetConversation(
$conversationId: ID!
)
conversation(where: conversationId: $conversationId)
id
title
【讨论】:
感谢@Benjie,您的回答帮助我找到了问题。我没有传递正确的变量,而是传递了一个字符串。我会用答案编辑我的问题。以上是关于预期类型变量是使用 Apollo 的对象的主要内容,如果未能解决你的问题,请参考以下文章