GraphQL::Client::ValidationError:变量 $id 和参数 eq 的类型不匹配(String!/ ItemId)

mr_*_*cle 1 ruby graphql

我想从 DatoCMS 获取特定数据,因此需要在 GraphQL 查询中传递一个参数。问题是我收到一个错误:

GraphQL::Client::ValidationError: Type mismatch on variable $id and argument eq (String! / ItemId)
Run Code Online (Sandbox Code Playgroud)

我正在使用 rubygraphql-client​​ gem 来提出这个请求(可能这并不重要),这是我第一次使用 Graphql。

下面是我的查询:

query($id: String!) {
  allTexts(filter: {id: {eq: $id}}) {
    title
    isSeparateActivity
    shortDescription
    longDescription
    text {
      article
    }
    author
    _updatedAt
    _createdAt
    length
  }
}
Run Code Online (Sandbox Code Playgroud)

如果我更改query($id: String!)query($id: ID!)我会收到新错误:

GraphQL::Client::ValidationError: ID isn't a defined input type (on $id)
Run Code Online (Sandbox Code Playgroud)

Dan*_*ews 5

看起来您的查询正在使用String!,并且它告诉您它必须是ItemId。如果没有端点来测试它,看起来如果您使用此查询,它应该可以工作:

query($id: ItemId) {
  allTexts(filter: {id: {eq: $id}}) {
    title
    isSeparateActivity
    shortDescription
    longDescription
    text {
      article
    }
    author
    _updatedAt
    _createdAt
    length
  }
}
Run Code Online (Sandbox Code Playgroud)