如何在 Sequelize 中使用自定义数据验证规则

阅读时长 6 分钟读完

如何在 Sequelize 中使用自定义数据验证规则

Sequelize 是一个强大的 Node.js ORM,它提供了许多灵活的功能,例如模型定义、关系映射、数据验证和查询构建等。在使用 Sequelize 进行开发时,你可能会遇到需要添加自定义数据验证规则的情况。本篇文章将介绍如何在 Sequelize 中使用自定义数据验证规则。

不必担心,即使你之前没有使用过 Sequelize,这篇文章也将为你进行详细的介绍和解释。在开始之前,确保你已经安装了最新版本的 Sequelize。

首先,什么是数据验证规则?

数据验证规则是用于确保我们在数据库中存储的数据是有效的(有意义的)规则。

对于 Sequelize,其提供了许多内置数据验证规则。例如:

  1. notNull - 值不能为 null 或 undefined

  2. isEmail - 值必须是有效的电子邮件地址

  3. isInt - 值必须是整数

  4. isIn - 值必须在给定的数组中

  5. isUrl - 值必须是有效的 URL 字符串

这些内置数据验证规则可能不够满足我们的需求,因此我们需要自定义数据验证规则。

要添加自定义数据验证规则,请按照以下步骤操作:

步骤 1

首先,打开我们的模型文件,例如 user.js,在其中添加数据验证规则。

在这里,我们将在模型中添加一个名为 isValidPhoneNumber 的自定义数据验证规则。

const { Model, DataTypes } = require('sequelize');

class User extends Model {}

User.init({ // 省略其他属性

phoneNumber: { type: DataTypes.STRING, allowNull: false, validate: { isValidPhoneNumber: function(value) { if (!/^1(3|4|5|7|8)\d{9}$/.test(value)) { throw new Error('手机号码格式不正确'); } } } }

}, { sequelize, modelName: 'user' });

module.exports = User;

在上面的模型中,我们添加了一个名为 phoneNumber 的属性,类型为字符串且不允许为空。我们还添加了一个名为 isValidPhoneNumber 的自定义数据验证规则。

步骤 2

其次,我们需要在 index.js 文件中定义我们的自定义数据验证规则。

const Sequelize = require('sequelize'); const sequelize = new Sequelize('database', 'username', 'password', { dialect: 'mysql', host: 'localhost' });

const User = sequelize.import('./models/user.js');

// 自定义数据验证规则 User.prototype.isValidPhoneNumber = function() { if (!/^1(3|4|5|7|8)\d{9}$/.test(this.phoneNumber)) { throw new Error('手机号码格式不正确'); } }

步骤 3

现在,我们已经定义了自定义数据验证规则,我们需要测试这个规则是否可以工作。

在我们的 index.js 文件中,我们可以添加以下代码来测试它的工作原理:

const user = await User.create({ email: 'test@test.com', password: '123456', phoneNumber: '13600000000' });

try { await user.validate(); } catch (error) { console.log(error.message); }

在上面的代码中,我们创建了一个 user 对象,并尝试对其进行验证。如果用户对象符合所有内置规则和自定义规则,则验证通过。否则,如果我们的自定义数据验证规则未通过,它将抛出一个错误,显示 "手机号码格式不正确"。

至此,我们已经成功地添加了自定义数据验证规则。

总结

在本篇文章中,我们了解了什么是数据验证规则,并添加了一个自定义数据验证规则。使用数据验证规则可以确保我们的数据有效性,并且有助于避免出现无效的数据,从而保证我们的系统的稳定性和健壮性。我们强烈建议您使用数据验证规则来保证您的数据正确性,这有助于您的项目保持良好的状态。

源代码示例 :

user.js

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

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

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

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

index.js

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

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

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

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

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

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

-------

运行结果 :

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

纠错
反馈