当前位置: 首页 > 知识库问答 >
问题:

类型变量应为使用Apollo的对象

聂迪
2023-03-14

我在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>
  )
}

[GraphQL错误]:消息:变量“$ConversationID”获得无效值“CJRTFAGWC00BQ0A300NJZ594R”;类型ConversationWhereUniqueInput应为对象。,位置:[object object],路径:未定义

我认为通过将变量作为variables={{conversationId}}传递,我实际上是按照请求传递了一个对象。我做错了什么?

编辑本杰帮我找到了哪里出了问题。

我不得不将const conversationId:any=this.props.conversation更改为const conversationId:any={this.props.conversation}

共有1个答案

瞿博易
2023-03-14

您正在传递变量:

{
  "conversationId": "cjrtfagwc00bq0a300njz594r"
}

这很好。问题是,您定义的查询声明ConversationID变量(您已经给出了字符串(或ID?)值“CJRTFAGWC00BQ0A300NJZ594R”)应该是ConversationWhereUniqueInput(它是输入对象):

$conversationId: ConversationWhereUniqueInput!

这两种类型(idConversationWhereUniqueInput)不兼容。

给定变量命名,我怀疑您希望更改GraphQL查询,以便它将conversationID属性作为where参数的一部分传递:

query GetConversation(
  $conversationId: ID!
) {
  conversation(where: {conversationId: $conversationId}) {
    id
    title            
  }
}
 类似资料:
  • 问题内容: 有没有办法从Java通用类的类型变量中获取Class对象?像这样: 此类型信息在编译时可用,因此不受类型擦除的影响,因此,从理论上讲,应该有一种方法来实现此目的。是否存在? 问题答案: 这有效:

  • 我有2种类型的类型类,其中一种类型包含另一种类型 我想这样称呼我的类型类: 但这行不通。 错误:(34,23)找不到参数e的隐式值:com.playground.Valides[com.playground.MyModel1,model.version.type]val v=隐式[Valides[MyModel1,model.version.type]]错误:(34,23)没有足够的隐式方法参数:

  • 问题内容: 我设法同时使用JSON和plist编码和解码,但是只能通过直接在特定对象上调用encoding / decode函数来实现。 例如: 这很好,没有问题。 但是,我试图获得一个仅接受协议一致性作为类型并保存该对象的函数。 这将导致以下错误: 无法使用类型为“(可编码)”的参数列表调用“编码” 看一下encoding函数的定义,似乎它应该能够接受,除非是我不知道的某种奇怪的类型。 问题答案

  • 问题内容: 除了Swift,我还有这个问题。如何Type在泛型中使用变量? 我尝试了这个: This didn’t work either: 有没有办法做到这一点?我感觉到Swift只是不支持 它,并且给了我一些模棱两可的错误消息。 编辑:这是一个更复杂的示例,其中无法 使用通用函数标头来解决问题。当然,这没有任何意义, 但是我在代码中的某处合理地使用了这种功能 ,宁愿发布一个干净的示例而不是我的

  • 我是graphql世界的新手,所以这可能是一个非常简单的问题,抱歉 我正在使用图形ql-compose-mongoose生成我的图形ql模式,这是我的猫鼬模式: 如果我尝试以下突变,它的工作正常 并返回此内容(以防查看响应可能会有所帮助) 现在,如果我尝试将附件传递给apollo,我不知道该怎么做,我不知道该提供哪种类型(附件不是正确的类型): 因此,搜索正确的类型,我对我的对象进行了内省,问题是

  • 我正在学习Apollo和graphQL,并将其集成到我的一个项目中。到目前为止一切正常,但现在我正在尝试一些突变,我正在努力处理输入类型和查询类型。我觉得事情比实际情况要复杂得多,因此我正在寻求如何处理我的情况的建议。我在网上找到的示例都是非常基本的模式,但现实总是更加复杂,因为我的模式非常大,如下所示(我只复制一部分): 然后定义输入和负载,依此类推... 为此,我需要一个变异来保存“计算”,因