使用Objection.js

时间:2018-05-08 10:44:46

标签: sql node.js postgresql objection.js

我正在尝试将一个新行插入到一个表中,该列的列定义为数组或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[],但我想确保我没有其他选择。

0 个答案:

没有答案