在开发前端应用程序时,使用 Sequelize 来进行关系型数据库的操作已经成为了一个常见的做法。但是,在实际的开发中,我们可能会遇到一些保存数据失败的问题,本篇文章将详细介绍如何正确地处理 Sequelize 保存数据失败问题。
问题的来源
Sequelize 保存数据失败的问题通常源于模型定义的验证器,这些验证器会在保存数据前对数据进行检验,如果检验失败,就会导致保存数据失败。以下是一个简单的模型定义,其中包含了两个验证器:
-- -------------------- ---- ------- -- ---- ----- ----- - ------------------------------ - ----- - ----- ----------------- ---------- ------ --------- - ---- --- ----- --------- ----- -- -- ---- - ----- ------------------ ---------- ----- --------- - ---- -- -- -- --- -- ---- -------------- ----- ------ ---- --- -------------- -- - -------------------- -------------- -- - ------------------- ---
在创建数据时,如果模型的验证器失败,就会抛出错误,并进入 catch
分支中。但是,在 catch
分支中,虽然我们可以获取到错误信息,但是我们并不知道到底哪一个验证器导致了错误,这为开发带来了不便。
如何正确地处理问题
为了解决这个问题,我们可以在模型定义的时候,为每一个验证器设置一个自定义的错误提示信息:
-- -------------------- ---- ------- ----- ----- - ------------------------------ - ----- - ----- ----------------- ---------- ------ --------- - ---- - ----- --- ----- ---- ---- ------ -- ---- ------ -- ------- - --- --- ------------- -- --------- - ---- ---- ---- ------ -- -------- -- -- -- ---- - ----- ------------------ ---------- ----- --------- - ---- - ----- -- ---- ---- --- ------ -- ------- ---- -- ----- -- ---- -- -- -- --- -------------- ----- ------ ---- --- -------------- -- - -------------------- -------------- -- - -------------------------- ---
在定义验证器时,我们将 msg
属性设置为自定义的错误提示信息。在错误处理的时候,我们可以通过访问 errors
属性来获取所有验证器的错误信息,如上面的代码所示。
另外,我们还可以通过 Sequelize 提供的 addError
方法,为错误对象添加自定义的错误信息:
-- -------------------- ---- ------- -------------- ----- ------ ---- --- -------------- -- - -------------------- -------------- -- - ------------------------ -- - -- ----------------- --- ------ - ----------- - ---- ---- ------ ------ -- ------- - --- --- ------------- - ---- -- ----------------- --- ----------- - ----------- - ---- ---- ------ -- -------- - ---- -- ----------------- --- ------ - ----------- - ---- --- ------ -- ------- ---- -- ----- -- ---- - -------------------- --- -------------------------- ---
通过 addError
方法,我们可以在错误对象上添加一个自定义的错误信息,并将其加入到 errors
数组中。在处理错误信息时,我们可以通过访问每一个错误对象的 validatorKey
属性,来确定哪一个验证器导致了错误,并为其添加自定义的错误信息。
总结
通过本篇文章的介绍,我们学习到了如何正确地处理 Sequelize 保存数据失败问题,提高了代码的可读性和可维护性。在实际开发中,我们应该尽可能地为每一个验证器设置自定义的错误提示信息,并在处理错误信息时,对其进行适当的加工,以便更好地展示给用户。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/664d4fcad3423812e4c9494c