【问题标题】:How do I define a hasura gql mutation that has an argument type defined in another schema?如何定义具有在另一个模式中定义的参数类型的 hasura gql 突变?
【发布时间】:2020-07-23 03:50:03
【问题描述】:

这是我的 GQL...(注意变量 $rrule

mutation CREATE(
  $title: String!,
  $description: String!,
  $duration: interval!,
  $photo_url: String,
  $rrule: String!,
  $venue_id: Int!
) {
  result:insert_event_templates_one(
    object: {
      title: $title,
      description: $description,
      duration: $duration,
      photo_url: $photo_url,
      rrule: $rrule,
      venue_id: $venue_id
    }      
  ) {
    id
  }
}

rrule 是另一个模式中的自定义列类型:_rrule 它可以隐式转换定义如下:

CREATE CAST (TEXT AS _rrule.RRULE)
  WITH FUNCTION _rrule.rrule(TEXT)
  AS IMPLICIT;

如何定义我的突变以引用该演员表?现在,当我运行此突变时,我收到以下错误:

variable rrule of type String! is used in position expecting rrule

所以 Hasura 似乎知道底层的列类型,但不能使用它的隐式转换?

【问题讨论】:

    标签: postgresql graphql hasura


    【解决方案1】:

    该错误与底层数据源没有任何关系。使用$rrule 变量的参数接受名为rrule 的GraphQL 类型。只有类型匹配的变量才能传递给参数。所以$rrule的类型必须和rrule的参数类型相同——也就是说,它的类型也应该是rrule

    mutation CREATE(
      $rrule: rrule!
      ...
    ) {
    ...
    }
    

    【讨论】:

    • 感谢您的回答。你是对的,这让我更接近实际错误,这是我的直觉,它不能使用 rrule,因为它是在另一个模式 (_rrule.RRule) 中定义的。我最终制作了一个虚拟列来保存文本,然后使用插入/更新后触发器将文本转换为另一列中的正确类型
    猜你喜欢
    • 2022-06-10
    • 2013-02-17
    • 1970-01-01
    • 2017-07-18
    • 2021-03-18
    • 2020-06-07
    • 2019-08-31
    • 1970-01-01
    • 2019-01-02
    相关资源
    最近更新 更多