Mongoose 通过手动验证 phone 和 email 格式
Mongoose 是一个在 Node.js 上运行的 MongoDB 对象建模工具,它可以提供非常便捷的操作 MongoDB 的 API,同时支持 Schema 设计以及数据验证等功能。
在实际的业务开发中,一些常见的数据需求是对于 phone 和 email 格式的验证,通常我们需要在前端做一些基本的验证,但是为了防止前端恶意请求等情况,我们需要在后端对于数据进行严格的格式验证。在这篇文章中,我们将会介绍如何使用 Mongoose 来手动验证 phone 和 email 格式。
验证 phone 格式
在 Node.js 中,我们可以使用正则表达式来验证手机号码的格式是否正确,以下就是一个基本的手机号码格式验证的正则表达式:
const phoneRegex = /^1[3456789]\d{9}$/;
其中 /^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 格式的正则表达式:
const emailRegex = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
类似于 phone 格式验证一样,我们可以通过将该正则表达式作为验证函数来实现 email 数据格式验证,以下是实现 email 格式验证的代码示例:
-- -------------------- ---- ------- ----- -------- - -------------------- ----- ---------- - --- ----------------- ------ - ----- ------- --------- ------ ------ ------- -- ------------ --------- - ---------- ----------- - ------ ------------------------------------------------------------- -- -------- ----- -- --------------- -- --- - ----- ----- --------- -- ------- ---- - --- -------------- - ---------------------- ------------
在 email 字段中,我们通过正则表达式的方式定义了 email 的格式验证,与上例类似的,如果未通过验证将会返回一个定制化的错误信息。
总结
Mongoose 的数据验证功能可以方便地实现对于数据的格式验证,Mongoose 支持多种验证方式,使得我们可以根据不同类型的数据进行特定的验证,从而保证了数据的正确性和完整性。
在实际代码中,我们可以通过调用 validate()
方法来手动进行验证,可以帮助我们快速定位出错的代码和数据,并及时加以修复。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6485211848841e989440df67