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

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

我使用node.js,postgreSQL和sequelize。 问题是sequelize upsert根据资源是否更新或创build返回truefalse

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

我尝试的一个解决scheme是通过在sequelize findOne查询的“where”属性中指定从客户端发送的每个列来尝试find完全相同的资源。 但是,如果客户端发送不在数据库中的附加列,则会引发错误。 而且在我的实施中不应该这样。

有没有可能实现这个? 最好没有一些性能开销。 谢谢

从Sequelize的upsert获得ID是不可能的。 欲了解更多信息,请参阅: https : //github.com/sequelize/sequelize/issues/3354

这个问题的一个可能的解决办法是强制用户(在这种情况下是REST API客户端)在请求更新的情况下提供logging的ID,并且在创build新logging的情况下不提供ID。 这通常是一个好主意,因为它阻止了往返数据库,尽pipe这会让你的API更加严格。