2016-06-09 43 views
3

我正在創建一個REST API。 我想實現一個獨特的PUT操作,它可以創建或更新數據庫中的特定資源。從upsert獲取插入行的id(insertOrUpdate)Sequelize Node.js

我使用node.js,postgreSQL和sequelize。 問題是,根據資源是否已更新或創建,sequelize upsert將返回truefalse

但我需要能夠發送唯一標識符(列ID)回到客戶端,如果資源被創建。

我試過的一個解決方案是試圖通過在sequelize findOne查詢的「where」屬性中指定從客戶端發送的每個列發送完全相同的資源。但是如果客戶端發送不在數據庫中的附加列,它會引發錯誤。在我的實施中,情況並非如此。

是否可以實現這一點?最好沒有一些性能開銷。 謝謝

回答

2

在Sequelize中從upsert取回ID是不可能的。欲瞭解更多信息,請參閱:https://github.com/sequelize/sequelize/issues/3354

此問題的一個可能的解決方案是強制用戶(或REST API客戶端在這種情況下)在請求更新時提供記錄的ID,並且不提供ID在創建新記錄的情況下。這通常是一個好主意,因爲它阻止了往返數據庫的往返行程,儘管它使得API更加嚴格。