【问题标题】:Why doesn't save() work in Sequelize?为什么 save() 在 Sequelize 中不起作用?
【发布时间】:2016-07-11 22:12:10
【问题描述】:

我在我的数据库中已经存在并定义了主键的对象上调用save()

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 *;"

【问题讨论】:

  • 你能检查一下instance.isNewRecord 是否有false 的值吗?您如何获得instance?使用.find() 函数?
  • 当它调用我的服务器时,我从客户端(浏览器)获取实例。我现在试试 set isNewRecord,谢谢,文档中没有。
  • 是的,谢谢,这行得通。哦,伙计,我希望 Sequelize 的人能更新他们的文档。我觉得我正在与这个图书馆作斗争。 Stackoverflow 上也几乎没有人 :-(
  • 我很高兴它成功了!你能把我的回答标记为正确吗?呵呵:P

标签: javascript sequelize.js


【解决方案1】:

您可以尝试在将instance.isNewRecord 设置为false 之前将其发送到服务器吗?

也许 sequelize 认为它是一条新记录,因此它会尝试插入它而不是更新它

【讨论】:

猜你喜欢
  • 2020-04-16
  • 2019-04-02
  • 2017-10-18
  • 2017-06-22
  • 1970-01-01
  • 2017-01-15
  • 1970-01-01
  • 1970-01-01
  • 2020-09-27
相关资源
最近更新 更多