graphql - 预期类型变量是使用 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": "变量 \"$conversationId\" 的值无效 \"cjrtfagwc00bq0a300njz594r\"; 预期类型 ConversationWhereUniqueInput 为对象。","locations":[{"line":1,"column":23}]}]}} ,"message":"网络错误:响应不成功:收到状态码 400"}
[GraphQL 错误]:消息:变量“$conversationId”的值无效“cjrtfagwc00bq0a300njz594r”;预期类型 ConversationWhereUniqueInput 为对象。,位置:[object Object],路径:未定义
我认为通过传递我的变量,因为variables={{ conversationId }}
我实际上是按要求传递了一个对象。我究竟做错了什么?
编辑 Benjie 帮我找到了问题所在。
我只需要更改const conversationId: any = this.props.conversation
为const conversationId: any = { this.props.conversation }
解决方案
您正在传递变量:
{
"conversationId": "cjrtfagwc00bq0a300njz594r"
}
这可以。问题是您的查询被定义为conversationId
变量(您已给出字符串(或ID
?) value "cjrtfagwc00bq0a300njz594r"
)应该是 a ConversationWhereUniqueInput
(这是一个输入对象):
$conversationId: ConversationWhereUniqueInput!
这两种类型 (ID
和ConversationWhereUniqueInput
) 不兼容。
鉴于您的变量命名,我怀疑您想更改 GraphQL 查询,以便将conversationId
属性作为where
参数的一部分传递:
query GetConversation(
$conversationId: ID!
) {
conversation(where: {conversationId: $conversationId}) {
id
title
}
}
推荐阅读
- r - 根据特定的值序列创建子集
- c# - 在c#中拆分时忽略拆分字符串列表中的某些字符串
- c++ - std::mutiset vs std::vector.Getting TLE in a code but AC in another
- typescript - 如何在 Typescript 中创建具有 Type1 的所有属性或 Type2 的所有属性的类型?
- javascript - OAuth2 - 在数据库中存储什么?
- java - 忽略特殊字符的单词使用计数器
- python - 如何在 Tensorflow 2 中使用 tf.keras.utils.Sequence 和 model.fit()?
- python - 有什么方法可以从网格中的标签中获取文本,只有 tkinter 中的行和列
- firebase - 如何在不登录的情况下通过存储在 Firebase Firestore 中的用户名获取用户配置文件数据?扑
- c# - 删除元素 ASP.Net Core MVC 的问题