Mongoose 通过手动验证 phone 和 email 格式

阅读时长 5 分钟读完

Mongoose 通过手动验证 phone 和 email 格式

Mongoose 是一个在 Node.js 上运行的 MongoDB 对象建模工具,它可以提供非常便捷的操作 MongoDB 的 API,同时支持 Schema 设计以及数据验证等功能。

在实际的业务开发中,一些常见的数据需求是对于 phone 和 email 格式的验证,通常我们需要在前端做一些基本的验证,但是为了防止前端恶意请求等情况,我们需要在后端对于数据进行严格的格式验证。在这篇文章中,我们将会介绍如何使用 Mongoose 来手动验证 phone 和 email 格式。

验证 phone 格式

在 Node.js 中,我们可以使用正则表达式来验证手机号码的格式是否正确,以下就是一个基本的手机号码格式验证的正则表达式:

其中 /^1[3456789]\d{9}$/ 表示以数字 1 开头,第二位是 3-9 之间的数,后面跟着 9 位数字,这个正则表达式可以匹配国内常见手机号码的格式。

在 Mongoose 中,我们可以通过定义 Schema 来实现数据验证,以下是一个用于保存用户手机号码的 Schema:

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

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

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

在上述代码中,我们定义了一个名为 userSchema 的 Schema,其中 phone 字段表示用户的手机号码,它的类型是字符串类型,并且在定义时进行了格式验证。

phone 字段中,我们除了定义了 type: String 之外,还通过 required 设置了该字段是必填项,如果验证未通过,将会返回提示信息 'Phone number is required.'

接着,在 validate 中,我们使用一个对象字面量来定义验证器,其中 validator 表示使用一个函数来实现数据验证,如果验证通过,函数应该返回 true,否则返回 false。在本例中,我们使用上述定义的手机号码格式验证正则表达式,并将手机号码作为参数传递给验证函数进行验证。

若验证未通过,将会返回一个自定义的提示消息,其中 message 使用了一个函数来生成提示消息,同时传入参数 props 表示当前验证所在的字段对象和验证未通过的数据。

最后,我们在 unique 中设置了该字段为唯一值,表示该字段的值不能重复。

在具体使用时,我们可以通过调用 valid() 来进行手动验证,以下是一个简单的例子:

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

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

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

在调用 validate() 方法时,如果数据验证未通过,将会返回一个错误对象,其中的错误信息将会提示具体的验证失败原因。

验证 email 格式

在实际业务中,我们还需要对于 email 格式进行验证,以下是一个可以用于验证 email 格式的正则表达式:

类似于 phone 格式验证一样,我们可以通过将该正则表达式作为验证函数来实现 email 数据格式验证,以下是实现 email 格式验证的代码示例:

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

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

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

在 email 字段中,我们通过正则表达式的方式定义了 email 的格式验证,与上例类似的,如果未通过验证将会返回一个定制化的错误信息。

总结

Mongoose 的数据验证功能可以方便地实现对于数据的格式验证,Mongoose 支持多种验证方式,使得我们可以根据不同类型的数据进行特定的验证,从而保证了数据的正确性和完整性。

在实际代码中,我们可以通过调用 validate() 方法来手动进行验证,可以帮助我们快速定位出错的代码和数据,并及时加以修复。

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

纠错
反馈