对于UUID []类型的列的Graphql变异

时间:2017-07-15 23:07:19

标签: postgresql uuid graphql postgraphql

我使用postgraphql自动生成的变异在postgres表中创建一个带有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阵列,但似乎没有任何工作

2 个答案:

答案 0 :(得分:2)

您可以 通过创建隐式广告来解决此问题:

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

进行测试

答案 1 :(得分:0)

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

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