2

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

但是,似乎没有办法用 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 数组,但似乎没有任何效果

4

2 回答 2

3

可能可以通过创建隐式强制转换来解决此问题:

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

PostgreSQL 会自动进行从text[]to的转换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

于 2017-07-15T23:35:30.453 回答
0

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

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

于 2017-08-09T13:49:07.010 回答