Sequelize 是一个基于 Node.js 的 ORM 框架,它允许你在 Node.js 程序中使用 SQL 数据库。它可以轻松地将数据表映射到 JavaScript 对象,提供了简洁的 API,使得您在进行数据库操作时可以更加便捷。
在 Sequelize 中,您可以在 model 的定义中设置验证器,用于检查数据的正确性。本文将详细介绍 Sequelize 中 model 定义中的验证器,并带有相关实例代码,有助于您深入了解 Sequelize 的使用。
验证器的作用
验证器用于检查数据库中插入、更新的数据是否符合定义的要求。它们可以检查数据的类型、长度、格式等方面,如果数据不符合要求,将抛出异常。在 Sequelize 中,您可以在 model 的定义中使用验证器对数据进行验证。
常用的验证器
allowNull
这个验证器用于检查是否允许空值,如果设置为 false,表示该字段不能为空。相反,如果设置为 true,则允许该字段为空。
对于整数等类型,如果不允许空值,则默认值为 0;对于字符串类型,如果不允许空值,则默认值为 ''。同时,如果字段设置了 allowNull: false,但实际插入的数据为 null,Sequelize 会报错。
// javascriptcn.com 代码示例 const User = sequelize.define('user', { username: { type: DataTypes.STRING, allowNull: false }, age: { type: DataTypes.INTEGER, allowNull: true } });
len
这个验证器用于检查字符串类型的字段长度。
const User = sequelize.define('user', { username: { type: DataTypes.STRING, allowNull: false, len: [1, 10] } });
上面代码中,len: [1, 10] 表示用户名的长度在 1-10 之间。如果长度不符合要求,Sequelize 会报错。
isEmail
这个验证器用于检查字符串类型的字段是否为合法邮箱格式。
const User = sequelize.define('user', { email: { type: DataTypes.STRING, allowNull: false, isEmail: true } });
isUrl
这个验证器用于检查字符串类型的字段是否为合法的 URL 地址格式。
const User = sequelize.define('user', { blog: { type: DataTypes.STRING, allowNull: false, isUrl: true } });
min和max
这两个验证器用于检查数字类型的字段是否符合最小值和最大值的要求。
const User = sequelize.define('user', { age: { type: DataTypes.INTEGER, allowNull: false, min: 18, max: 60 } });
上面代码中,age 字段的值必须在 18 到 60 之间。
自定义验证器
除了 Sequelize 提供的常用验证器外,您还可以使用自定义验证器对数据进行验证。
// javascriptcn.com 代码示例 const User = sequelize.define('user', { username: { type: DataTypes.STRING, allowNull: false, validate: { isUnique: function (value, next) { var self = this; User.findOne({ where: {username: value} }) .then(function (user) { if (user && self.id !== user.id) { return next('用户名已经存在'); } next(); }).catch(function (err) { console.log(err); next(err); }); } } } });
上面代码中,我们定义了一个自定义的验证器 isUnique,它用于检查用户名是否已经存在。如果用户名已经存在,返回错误信息;否则,继续进行下一步的操作。
这里需要注意的是,isUnique 只是一个自定义验证器的名称,Sequelize 并不会自动识别 isUnique 验证器,需要在 model 中定义。
总结
本文介绍了 Sequelize 中 model 定义中的一些常用验证器,并使用示例代码进行了详细的说明。通过了解 Sequelize 的验证器,您可以更加规范、方便地进行数据库操作,提高程序的可靠性和效率。希望本文对您有所帮助!
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/653f43227d4982a6eb8cb3b8