从upsert获取插入行的id(insertOrUpdate)Sequelize Node.js

时间:2016-06-09 15:21:47

标签: javascript node.js postgresql sequelize.js

我正在创建一个REST API。 我想实现一个独立的PUT操作,它可以创建或更新数据库中的特定资源。

我正在使用node.js,postgreSQL和sequelize。 问题是,sequelize upsert会返回truefalse,具体取决于资源是否已更新或创建。

但是如果资源已经创建,我需要能够将唯一标识符(列ID)发送回客户端。

我尝试过的一个解决方案是通过在sequelize findOne查询的“where”属性中指定从客户端发送的每一个列来尝试找到完全相同的资源。但是如果客户端发送不在数据库中的其他列,则会抛出错误。在我的实施中不应该这样。

有可能实现这个吗?最佳地没有一些性能开销。 感谢

1 个答案:

答案 0 :(得分:2)

目前无法在Sequelize中从upsert获取ID。有关详细信息,请参阅:https://github.com/sequelize/sequelize/issues/3354

此问题的可能解决方案是强制用户(在这种情况下为REST API客户端)在请求更新时提供记录的ID,并在创建新记录时不提供ID 。这通常是一个好主意,因为它可以防止往返数据库,但它会使您的API更加严格。