Mongoose 是一款优秀的 Node.js ORM 框架,它提供了丰富的功能和灵活的 API。其中一个关键特性是数据验证,在插入或者更新数据的时候,Mongoose 会自动检查数据的合法性。在本文中,我们将介绍如何使用 Mongoose 的数据验证功能,避免无效数据被插入到数据库中。
Mongoose 数据验证简介
在使用 Mongoose 进行 CRUD 操作的时候,我们有时需要对数据进行验证,确保数据的合法性。Mongoose 的数据验证可以在数据模型中定义验证规则,一旦数据不符合规则,就无法被插入到数据库中。这样的好处是可以避免无效数据被插入到数据库中,保证数据质量。
Mongoose 支持四种验证类型,分别为:required,minlength,maxlength 和 enum。其中,required 表示字段必须存在,minlength 和 maxlength 分别表示字符串字段的最小长度和最大长度,enum 表示字段必须是指定的值之一。
下面是一个简单的例子,展示了如何使用 Mongoose 进行数据验证:
-- -------------------- ---- ------- ----- -------- - -------------------- ----- ---------- - --- ----------------- ----- - ----- ------- --------- ----- ---------- -- ---------- --- -- ---- - ----- ------- --------- ----- ---- --- ---- --- -- ------- - ----- ------- ----- -------- ---------- -- --- ----- ---- - ---------------------- ------------ ----- ------- - --- ------ ----- ------- ---- --- --- ------------------ ----- -- - -- ----- - ----------------- - ---- - ------------------ - ---
在这个例子中,我们定义了一个用户数据模型,定义了三个字段:name,age 和 gender。其中,name 和 age 都是必须的,并且分别设置了最小值和最大值。gender 是一个枚举值,只能是 male 或者 female 之一。
在创建一个新的用户时,我们省略了 gender 字段,此时 Mongoose 会抛出一个错误,因为 gender 是必须的字段。如果我们将 age 设置为 17,则也会抛出一个错误,因为 age 的最小值是 18。
自定义验证
除了支持四种内置的验证类型外,Mongoose 还支持通过自定义函数进行验证。自定义函数可以接受两个参数:要验证的值和验证失败时的错误信息,如果值不符合要求,则需要调用回调函数,并传入错误信息,否则调用回调函数并传入 undefined。
下面是一个自定义验证的例子:
-- -------------------- ---- ------- ----- -------- - -------------------- ----- ------ - ---------------- ----- ------------ - --- -------- ----- - ----- ------- --------- ----- -- ---- - ----- ------- --------- ----- --------- - ---------- -------- --- - ------ - -- --- -- -------- ---- ---- -- -- ----- ----- -- -- --- ----- ------ - ------------------------ -------------- ----- ------ - --- -------- ----- ------- ---- --- --- ----------------- ---- -- - -- ----- - ------------------------- - ---- - -------------------- - - -------- - ---
在这个例子中,我们定义了一个 person 数据模型,其中 age 字段添加了一个自定义验证函数,用于验证年龄是否大于等于 18 岁。因为 person 对象的 age 字段值为 11,所以保存操作会失败,并抛出一个错误,包含了自定义错误信息。
总结
Mongoose 的数据验证功能是一个非常有用的特性,可以帮助我们避免无效数据被插入到数据库中。我们可以使用内置类型或自定义函数进行验证,保证数据的合法性。在实际开发中,我们建议在数据模型中定义验证规则,这样可以使代码更加清晰易懂,并且验证功能也能够与其他代码协调工作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64e0a04bf6b2d6eab3bc067e