Sequelize 中如何使用自定义的 Validation
Sequelize 是一个 Node.js ORM,它提供了丰富的数据验证功能,但有时候我们可能需要使用自定义的验证规则。本文将介绍如何在 Sequelize 中定义和应用自定义验证规则。
定义自定义验证规则
在 Sequelize 中定义自定义验证规则非常简单,我们只需要调用 sequelize. validator. custom()
方法即可。这个方法需要接收一个回调函数,函数的参数分别是待验证的属性值和整个模型对象。函数应该返回一个布尔值,表示该属性是否通过验证。
以下是一个简单的例子,演示如何定义一个自定义验证规则来验证用户名是否是以字母开头的字符串(以及判断长度是否达到要求):
-- -------------------- ---- ------- ----- ---- - ------------------------ - --------- - ----- ----------------- ---------- ------ --------- - --- ------------------------- ---- --- ---- ---------------------- - -- -------------------------- - ----- --- --------------- ---- ----- ---- - ---------- - -- ------------- - - -- ------------ - --- - ----- --- --------------- ---- -- ---- ---------- -- ---------- - -- -- -- ---
上面的例子中,我们新增了一个自定义验证规则 isUsernameValid
,它和内置的 is
和 len
规则一样,都被定义在 validate
属性下方。isUsernameValid
接收一个参数 value
,表示待验证的属性值。我们用两个正则表达式分别验证了属性值是否以字母开头以及长度是否在要求范围之内,如果验证失败,我们就抛出了一个带有错误信息的异常。
应用自定义验证规则
定义好自定义的验证规则之后,我们就可以在模型对象上使用它了。在定义数据库表时,我们只需要在 validate
属性里调用自定义的验证规则即可。
const john = User.build({ username: 'john doe' }); try { await john.validate(); console.log('Valid!'); } catch (err) { console.log(err.message); // "Username must start with a letter." }
上面的例子中,我们创建了一个用户对象,并把一个不合法的用户名传递给它。使用 validate
方法,我们可以对用户对象进行验证,如果验证失败,就会抛出一个异常,其中包含错误信息。使用 try-catch 语句,我们可以捕获这个异常并输出错误信息。
另外,在使用 create
、bulkCreate
、update
等方法时,Sequelize 会自动调用验证方法。如果某个模型对象没有通过验证,调用这些方法时就会抛出一个异常。
总结
本文介绍了如何在 Sequelize 中定义和应用自定义的验证规则。定义一个自定义规则非常简单,我们只需要调用 sequelize. validator. custom()
方法,并传递一个回调函数。应用自定义规则也很容易,我们只需要在 validate
属性里调用自定义的验证规则。希望本文对你有所帮助,让你更好地掌握 Sequelize 的数据验证功能。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/646da9da968c7c53b0c4e051