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

时间:2017-05-14 10:36:50

标签: arrays postgresql promise append sequelize.js

我有一个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 个答案:

答案 0 :(得分:5)

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}}
);

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