2016-07-11 60 views
2

我在我的數據庫中已經存在的對象上定義了一個主鍵,然後調用save()爲什麼不保存()在Sequelize中工作?

而不是更新對象,Sequelize告訴我id must be unique。爲什麼?

我不想說update({every,single,field,except,the,id})。那太乏味了。

這裏是我當前的代碼:

const instance = db.dbo__peach_payments_transactions.build(existingPayment); 
return db.transaction(async (transaction) => { 
    return instance.save(); 
}); 

我現在也嘗試:

return instance.update({fields: [ 
      'updated_at', 
      'orders_id', 
      'payment_states_id', 
      'response_data', 
      'token', 
      'result', 
      'reason_code', 
      'reason_message', 
      'price', 
      'processed_at']}); 
     }); 

但這種情況下,代替保存這些領域的相反 SQL,它排除他們給我的錯誤:updated_at cannot be null(即使它不是空)與此sql:

"INSERT INTO "dbo"."peach_payments_transactions" ("peach_payments_transactions_id","created_at") VALUES ('7fb301e9-bb72-4a70-9ee5-0db1376e83e8','2016-07-11 13:48:20.137 +00:00') RETURNING *;"

+1

你可以檢查是否'instance.isNewRecord'有'FALSE'價值?你如何獲得'實例'?用'.find()'函數? – demarchisd

+0

當我調用我的服務器時,我從客戶端(瀏覽器)獲取實例。我會嘗試設置isNewRecord,謝謝,這不在文檔中。 – Richard

+0

是的,謝謝,這是有效的。唉,我希望Sequelize的人會更新他們的文檔。我覺得我正在與這個圖書館抗爭一場暴風雪。而且幾乎沒有任何人在Stackoverflow上:-( – Richard

回答

3

在發送給服務器之前,您可以嘗試設置instance.isNewRecordfalse嗎?

也許sequelize正在考慮一個新的記錄,因此它試圖將其插入,而不是更新

+0

如果你想要更多的觀點:http://stackoverflow.com/questions/38304742 /如何做-DO排序-A-選擇功能於sequelize-正確 – Richard