我正在尝试将一个新行插入到一个表中,该列的列定义为数组或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}
])
可以看出,查询包含LiteralBuilder
对象的JSON字符串表示形式,而不是SQL语法理解为类型转换的内容。
如果我跳过转换单个UUID字符串并将整个列强制转换为数组,那么Postgres会拒绝该查询,因为该列的类型为uuid[]
,但我尝试将列插入为{{1} }。
如何使用Objection.js ORM格式化此查询?
我的目标是保持列定义不变,并能够插入Postgres'使用Objection.js的UUID数组,通过其API或通过原始查询。如果Objection目前无法做到这一点,作为最后的手段,我愿意将该列重新定义为
text[]
,但我想确保我没有其他选择。