如何正确地处理 Sequelize 保存数据失败问题

阅读时长 5 分钟读完

在开发前端应用程序时,使用 Sequelize 来进行关系型数据库的操作已经成为了一个常见的做法。但是,在实际的开发中,我们可能会遇到一些保存数据失败的问题,本篇文章将详细介绍如何正确地处理 Sequelize 保存数据失败问题。

问题的来源

Sequelize 保存数据失败的问题通常源于模型定义的验证器,这些验证器会在保存数据前对数据进行检验,如果检验失败,就会导致保存数据失败。以下是一个简单的模型定义,其中包含了两个验证器:

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

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

在创建数据时,如果模型的验证器失败,就会抛出错误,并进入 catch 分支中。但是,在 catch 分支中,虽然我们可以获取到错误信息,但是我们并不知道到底哪一个验证器导致了错误,这为开发带来了不便。

如何正确地处理问题

为了解决这个问题,我们可以在模型定义的时候,为每一个验证器设置一个自定义的错误提示信息:

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

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

在定义验证器时,我们将 msg 属性设置为自定义的错误提示信息。在错误处理的时候,我们可以通过访问 errors 属性来获取所有验证器的错误信息,如上面的代码所示。

另外,我们还可以通过 Sequelize 提供的 addError 方法,为错误对象添加自定义的错误信息:

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

通过 addError 方法,我们可以在错误对象上添加一个自定义的错误信息,并将其加入到 errors 数组中。在处理错误信息时,我们可以通过访问每一个错误对象的 validatorKey 属性,来确定哪一个验证器导致了错误,并为其添加自定义的错误信息。

总结

通过本篇文章的介绍,我们学习到了如何正确地处理 Sequelize 保存数据失败问题,提高了代码的可读性和可维护性。在实际开发中,我们应该尽可能地为每一个验证器设置自定义的错误提示信息,并在处理错误信息时,对其进行适当的加工,以便更好地展示给用户。

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

纠错
反馈