2016-07-11 26 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