У меня есть рабочий запрос в 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": { "имя": "ServerError", "ответ": {}, "StatusCode": 400, "результат": { "ошибки": [{ "сообщение":»Переменная \ "$ dialogId \" получила недопустимое значение \ "cjrtfagwc00bq0a300njz594r \"; Ожидаемый тип ConversationWhereUniqueInput для объекта. "," Location ": [{" line ": 1," column ": 23}]}]}},«message»: «Ошибка сети: Ответ не выполнен: получен код состояния 400»}
[Ошибка GraphQL]: Сообщение: переменная «$ dialogId» получила недопустимое значение «cjrtfagwc00bq0a300njz594r»;Ожидаемый тип ConversationWhereUniqueInput для объекта., Location: [object Object], Path: undefined
Я подумал, что, передав мою переменную как variables={{ conversationId }}
, я фактически передавал объект по запросу.Что я делаю не так?
РЕДАКТИРОВАТЬ Бенджи помог мне найти, что было не так.
Мне просто нужно было изменить const conversationId: any = this.props.conversation
на const conversationId: any = { this.props.conversation }