【问题标题】:Graphql mutation for a column of type UUID[]UUID[] 类型列的 Graphql 突变
【发布时间】:2017-12-20 18:26:30
【问题描述】:

我正在使用 postgraphql 自动生成的突变在 postgres 表中的 a 中创建带有 graphql 的行,该表具有数据类型 UUID[] 的列。

但是,似乎没有办法用 graphql 保存这个 UUID[] 数据?这是 graphql 没有考虑的数据类型,还是我错误地形成了数组?

当我在 graphiql 中创建行时:

mutation {
  createJob(
    input: {
      user_ids: ["5b7323ac-e235-4edb-bbf9-97495d9a42a1"], 
      instructions: "Job Instructions", 
      publishedDate: "2017-06-07"}
   }
 )
}

我收到以下错误:

"message": "column \"user_ids\" is of type uuid[] but expression is of type text[]"

从技术上讲,UUID 是否不像文本那样存储?我尝试了不同的方法来形成 UUID 数组,但似乎没有任何效果

【问题讨论】:

    标签: postgresql uuid graphql postgraphql


    【解决方案1】:

    您可以可能通过创建一个隐式强制转换来解决这个问题:

    CREATE CAST (text[] AS uuid[])
        WITH INOUT
        AS IMPLICIT ;
    

    PostgreSQL 会自动进行从text[]uuid[] 的转换;这似乎是需要的步骤。


    注意:以上代码必须从“uuid[]或text[]类型的所有者”执行,通常表示:postgres或数据库所有者。


    要检查它是否有效,您可以这样做:

    CREATE TABLE t
    (
       ids uuid[]
    ) ;
    
    INSERT INTO t 
        (ids)
    VALUES
        (ARRAY['5b7323ac-e235-4edb-bbf9-97495d9a42a1','5b7323ac-e235-4edb-bbf9-97495d9a42a2']),
        (ARRAY['6b7323ac-e235-4edb-bbf9-97495d9a42a1']) ;
    

    ...然后,用GraphQL测试它

    【讨论】:

    • 这在 GraphQL / PostgreSQL 中对我有用。非常感谢乔阿诺洛
    【解决方案2】:

    这是 PostGraphQL 中的一个错误;已在版本 4 中修复(尚未发布,但您可以通过npm install postgraphql@next 安装)

    更多信息:https://github.com/postgraphql/postgraphql/issues/516

    【讨论】:

      猜你喜欢
      • 2019-07-20
      • 2019-11-18
      • 2020-09-22
      • 2017-09-18
      • 2020-12-09
      • 1970-01-01
      • 2021-08-20
      • 2020-01-19
      • 2018-02-22
      相关资源
      最近更新 更多