Sequelize 调用 save 方法无法更新记录的解决方案

阅读时长 2 分钟读完

在使用 Sequelize 进行数据库操作时,我们经常会使用 save() 方法来更新记录。但是有时候会遇到调用 save() 方法却无法更新记录的情况。本文将为大家介绍这种情况的解决方案,并提供示例代码进行演示。

问题分析

在 Sequelize 中,调用 save() 方法时,它会根据实例的 isNewRecord 属性值来判断是执行插入操作还是更新操作。如果 isNewRecord 为 true,则执行插入操作;否则执行更新操作。

而当我们在执行更新操作时,如果没有指定更新条件,Sequelize 会默认以实例的主键作为更新条件。如果主键没有被设置,则会抛出 SequelizeEagerLoadingError 异常。

解决方案

解决这个问题的方法很简单,就是在更新操作时,明确指定更新条件。Sequelize 提供了 update() 方法来执行更新操作,并且可以指定更新条件。我们可以通过 update() 方法来代替 save() 方法进行更新操作。

示例代码如下:

-- -------------------- ---- -------
----- ---- - ------------------------ -
  --- -
    ----- ------------------
    ----------- -----
    -------------- -----
  --
  ----- -----------------
  ---- ------------------
---

-- ----
------------
  - ----- ------- ---- -- --
  - ------ - --- - - - -- ------
--------- -- -
  --------------------
-------------- -- -
  --------------------- -----
---

在上面的示例代码中,我们使用 update() 方法来更新记录,并且通过 { where: { id: 1 } } 指定了更新条件。

总结

在使用 Sequelize 进行数据库操作时,我们需要注意指定更新条件,以避免出现无法更新记录的情况。虽然 save() 方法在更新操作时没有指定更新条件会抛出异常,但是我们还是建议使用 update() 方法来进行更新操作,以避免出现不必要的异常。

希望本文能够对大家理解 Sequelize 的更新操作有所帮助。如果还有什么疑问或者建议,欢迎在评论区留言。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65fa7348d10417a22264fe62

纠错
反馈