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

Mat*_*ády 7 javascript postgresql node.js sequelize.js

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

我正在使用node.js,postgreSQL和sequelize.问题是,sequelize upsert返回要么true还是false取决于wheter资源得到了更新或创建.

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

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

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

Gil*_*tzi 3

upsert目前无法从 Sequelize 中取回 ID 。欲了解更多信息,请参阅:https://github.com/sequelize/sequelize/issues/3354

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