我使用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阵列,但似乎没有任何工作
答案 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
安装)