Мутация Graphql для столбца типа UUID[]

Я использую автоматически сгенерированную мутацию postgraphql для создания строки с graphql в таблице postgres, в которой есть столбец с типом данных UUID[].

Тем не менее, похоже, что нет способа сохранить эти данные UUID [] с помощью graphql? Это тип данных, который 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 ответа

Вероятно, вы можете обойти эту проблему, создав неявное приведение:

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

Это была ошибка в PostGraphQL; это было исправлено в версии 4 (которая еще не была выпущена, но вы можете установить через npm install postgraphql@next)

Дополнительная информация: https://github.com/postgraphql/postgraphql/issues/516

Другие вопросы по тегам