Я пытаюсь вставить новую строку в таблицу со столбцом, определенным как массив или UUID:
alter table medias add column "order" uuid[];
Я использую Objection.js ORM и пытаюсь выполнить следующий запрос:
const order = [
'BFAD6B0D-D3E6-4EB3-B3AB-108244A5DD7F'
]
Medias
.query()
.insert({
order: lit(order.map(id => lit(id).castType('uuid'))).castArray()
})
Но запрос искажен и поэтому не выполняется:
INSERT INTO xxx ("order")
VALUES (ARRAY [
{"_value":"BFAD6B0D-D3E6-4EB3-B3AB-108244A5DD7F","_cast":"uuid","_toJson":false,"_toArray":false}
])
Как видно, запрос содержит строковое представление JSON объекта LiteralBuilder
, а не то, чтосинтаксис SQL понимается как приведение типа.
Если я пропущу приведение отдельных строк UUID и просто приведу весь столбец в массив, то Postgres отклонит запрос, поскольку столбец имеет тип uuid[]
, но я пытаюсьвставить столбец как text[]
.
Как мне отформатировать этот запрос с помощью Objection.js ORM?
Моя цель - сохранить определение столбцанетронутым и иметь возможность вставлять массив UUID Postgres, используя Objection.js, либо через его API, либо через необработанный запрос.Если в настоящее время это невозможно с помощью функции «Возражение», я хотел бы, в крайнем случае, переопределить столбец как text[]
, но я хотел бы убедиться, что у меня действительно нет другого варианта.