如何使用 Sequelize + PostgreSQL 将项目附加到数组值

Posted

技术标签:

【中文标题】如何使用 Sequelize + PostgreSQL 将项目附加到数组值【英文标题】:how to append item to an array value with Sequelize + PostgreSQL 【发布时间】:2017-10-13 06:13:13 【问题描述】:

我有一个 posgresql 数据库,表中有一列是一个数组:Sequelize.ARRAY(Sequelize.BIGINT)

向数组追加新项目的正确方法是什么?

我是 posgresql、sequelize 和 nodejs 的新手。也许这是一个微不足道的问题。 通过阅读,我想我知道如何使用 Promise.all 来读取所有行、追加和更新。 问题,是不是有什么好用的捷径。

PostreSQL documentation 提到了一个函数array_append(anyarray, anyelement)

Sequelize documentation offers 一个函数 fn,其中 Creates an object representing a database function,但似乎只在 where and order parts 中工作

有什么方法可以将它们组合起来进行类似追加的更新?

【问题讨论】:

【参考方案1】:

Array Datatype 有许多方法,如 append、concat 等,您可以看到 here。我将举一个array_append函数的例子。

Room 是一个续集模型,job_ids 是该模型中的一列,数据类型为整数数组。 sequelize 是 Sequelize 类的一个瞬间。

Room.update(
 'job_ids': sequelize.fn('array_append', sequelize.col('job_ids'), new_jobId),
 'where': 'id': roomId
);

假设此列的默认值为空数组,否则可能会引发错误。

【讨论】:

以上是关于如何使用 Sequelize + PostgreSQL 将项目附加到数组值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Sequelize Postgres 中使用小写函数

Sequelize Postgres - 如何使用 ON CONFLICT 来实现独特的?

用户如何使用 sequelize postgres nodejs 互相喜欢和不同?

如何在 NestJs 框架中使用 postgres 和 sequelize 正确定义 DTO 对象

Sequelize w/Postgres 测试异步错误

Node.js Sequelize UUID 主键 + Postgres