sql - 使用 Objection.js 插入一组 UUID
问题描述
我正在尝试将新行插入到表中,其中列定义为数组或 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[]
,但我试图将该列插入为text[]
.
如何使用 Objection.js ORM 格式化此查询?
我的目标是保持列定义不变,并能够使用 Objection.js 通过其 API 或通过原始查询插入 Postgres 的 UUID 数组。如果目前使用异议无法做到这一点,作为最后的手段,我愿意将列重新定义为
text[]
,但我想确保我真的没有其他选择。
解决方案
推荐阅读
- python - 如何编写自动创建标签增量的批处理脚本?
- java - 如何正确退出方法(返回类型为'int')而不在Java中实际返回任何值?
- sql - Hive HQL 中的错误:尚不支持 UDAF 'MAX' 的位置
- php - 如何在数组值中获取数组值
- python - Django一次保存多个对象
- sql - 在 MSSQL 中转义单引号
- amazon-web-services - AWS Serverless:根据请求或 HTTP API 参数强制执行并行 lambda
- javascript - 使用 id React 将特定对象推入列表
- python - 使用 gunicorn + gevent 启动 Flask 应用程序,监听地址:http://127.0.0.1:8000,但没有响应
- sql - Spring Boot Autoimport import.sql 文件 - 出现“找不到列”错误