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

8
我有一个posgresql数据库, 表中有一个列是数组:Sequelize.ARRAY(Sequelize.BIGINT)
正确的方法是什么来将新项目添加到数组中?
我对posgresql、sequelize和nodejs都不熟悉,也许这是一个琐碎的问题。从阅读周围的资料中,我认为我知道如何使用Promise.all读取所有行,进行追加,并更新回去。问题是,难道没有任何有用的快捷方式吗? PostreSQL文档提到了一个函数array_append(anyarray, anyelement)Sequelize文档提供了一个函数fn,它“创建一个表示数据库函数的对象”,但似乎只在“where和order部分”有效。
有没有办法将它们组合起来实现类似追加的更新?
1个回答

20

数组数据类型有许多方法,例如append、concat等,可以在这里看到。我将使用array_append函数举例。

Room是Sequelize模型,job_ids是该模型中的一列,其数据类型为整数的数组。 sequelize是Sequelize类的实例。

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接