预期类型变量是使用 Apollo 的对象
Expected type variable to be an object using Apollo
我在 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":[{"message":"Variable \"$conversationId\" got invalid value \"cjrtfagwc00bq0a300njz594r\"; Expected type ConversationWhereUniqueInput to be an object.","locations":[{"line":1,"column":23}]}]}},"message":"Network error: Response not successful: Received status code 400"}
[GraphQL error]: Message: Variable "$conversationId" got invalid value "cjrtfagwc00bq0a300njz594r"; Expected type ConversationWhereUniqueInput to be an object., Location: [object Object], Path: undefined
我认为通过将我的变量作为 variables={{ conversationId }}
传递,我实际上是在按要求传递一个对象。我做错了什么?
编辑
Benjie帮我找出问题所在
我只需要将 const conversationId: any = this.props.conversation
更改为 const conversationId: any = { this.props.conversation }
您正在传递变量:
{
"conversationId": "cjrtfagwc00bq0a300njz594r"
}
这很好。问题是你的查询被定义为 conversationId
变量(你已经给了字符串(或 ID
?)值 "cjrtfagwc00bq0a300njz594r"
)应该是 ConversationWhereUniqueInput
(哪个是一个输入对象):
$conversationId: ConversationWhereUniqueInput!
这两种类型(ID
和 ConversationWhereUniqueInput
)不兼容。
鉴于您的变量命名,我怀疑您想更改 GraphQL 查询,以便它通过 conversationId
属性 作为 where
参数的一部分:
query GetConversation(
$conversationId: ID!
) {
conversation(where: {conversationId: $conversationId}) {
id
title
}
}
我在 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":[{"message":"Variable \"$conversationId\" got invalid value \"cjrtfagwc00bq0a300njz594r\"; Expected type ConversationWhereUniqueInput to be an object.","locations":[{"line":1,"column":23}]}]}},"message":"Network error: Response not successful: Received status code 400"}
[GraphQL error]: Message: Variable "$conversationId" got invalid value "cjrtfagwc00bq0a300njz594r"; Expected type ConversationWhereUniqueInput to be an object., Location: [object Object], Path: undefined
我认为通过将我的变量作为 variables={{ conversationId }}
传递,我实际上是在按要求传递一个对象。我做错了什么?
编辑 Benjie帮我找出问题所在
我只需要将 const conversationId: any = this.props.conversation
更改为 const conversationId: any = { this.props.conversation }
您正在传递变量:
{
"conversationId": "cjrtfagwc00bq0a300njz594r"
}
这很好。问题是你的查询被定义为 conversationId
变量(你已经给了字符串(或 ID
?)值 "cjrtfagwc00bq0a300njz594r"
)应该是 ConversationWhereUniqueInput
(哪个是一个输入对象):
$conversationId: ConversationWhereUniqueInput!
这两种类型(ID
和 ConversationWhereUniqueInput
)不兼容。
鉴于您的变量命名,我怀疑您想更改 GraphQL 查询,以便它通过 conversationId
属性 作为 where
参数的一部分:
query GetConversation(
$conversationId: ID!
) {
conversation(where: {conversationId: $conversationId}) {
id
title
}
}