验证
模型验证允许你为模型的每个属性指定格式/内容/继承验证.
验证会自动运行在 create , update 和 save 上. 你也可以调用 validate() 手动验证一个实例.属性验证器
你可以自定义验证器或使用由validator.js实现的几个内置验证器,如下所示.
class ValidateMe extends Model {}ValidateMe.init({ bar: { type: Sequelize.STRING, validate: { is: ["^[a-z]+$",'i'], // 只允许字母 is: /^[a-z]+$/i, // 与上一个示例相同,使用了真正的正则表达式 not: ["[a-z]",'i'], // 不允许字母 isEmail: true, // 检查邮件格式 (foo@bar.com) isUrl: true, // 检查连接格式 (http://foo.com) isIP: true, // 检查 IPv4 (129.89.23.1) 或 IPv6 格式 isIPv4: true, // 检查 IPv4 (129.89.23.1) 格式 isIPv6: true, // 检查 IPv6 格式 isAlpha: true, // 只允许字母 isAlphanumeric: true, // 只允许使用字母数字 isNumeric: true, // 只允许数字 isInt: true, // 检查是否为有效整数 isFloat: true, // 检查是否为有效浮点数 isDecimal: true, // 检查是否为任意数字 isLowercase: true, // 检查是否为小写 isUppercase: true, // 检查是否为大写 notNull: true, // 不允许为空 isNull: true, // 只允许为空 notEmpty: true, // 不允许空字符串 equals: 'specific value', // 只允许一个特定值 contains: 'foo', // 检查是否包含特定的子字符串 notIn: [['foo', 'bar']], // 检查是否值不是其中之一 isIn: [['foo', 'bar']], // 检查是否值是其中之一 notContains: 'bar', // 不允许包含特定的子字符串 len: [2,10], // 只允许长度在2到10之间的值 isUUID: 4, // 只允许uuids isDate: true, // 只允许日期字符串 isAfter: "2011-11-05", // 只允许在特定日期之后的日期字符串 isBefore: "2011-11-05", // 只允许在特定日期之前的日期字符串 max: 23, // 只允许值 <= 23 min: 23, // 只允许值 >= 23 isCreditCard: true, // 检查有效的信用卡号码 // 自定义验证器的示例: isEven(value) { if (parseInt(value) % 2 !== 0) { throw new Error('Only even values are allowed!'); } } isGreaterThanOtherField(value) { if (parseInt(value) <= parseInt(this.otherField)) { throw new Error('Bar must be greater than otherField.'); } } } } }, { sequelize });
请注意,如果需要将多个参数传递给内置的验证函数,则要传递的参数必须位于数组中. 但是,如果要传递单个数组参数,例如isIn
的可接受字符串数组,则将被解释为多个字符串参数,而不是一个数组参数. 要解决这个问题,传递一个单一长度的参数数组,比如[['one','two']]
.
要使用自定义错误消息而不是 validator.js 提供的错误消息,请使用对象而不是纯值或参数数组,例如不需要参数的验证器可以被给定自定义消息:
isInt: { msg: "Must be an integer number of pennies"}
实际使用方法:
const { Sequelize, Model } = require('sequelize'); const { sequelize } = require('../config/db'); const validator = require('validator'); const bcryptjs = require('bcryptjs') const slat = bcryptjs.genSaltSync(10); class Users extends Model { static async register(username, password, type) { //捕获错误 try { const user = await Users.create({ username, password, type }) return { code: 0, message: '注册成功' } } catch (e) { return { code: -1, message: e } } } static async login(username, password) { const user = Users.fiind } } Users.init({ id: { type: Sequelize.INTEGER, primaryKey: true,//设置主键 autoIncrement: true,//自增长 }, type: { type: Sequelize.STRING, }, username: { type: Sequelize.STRING, validate: { notEmpty: { msg: "用户名不能为空" } } }, password: { type: Sequelize.STRING, set(pwd) { const pwds = bcryptjs.hashSync(pwd, slat); this.setDataValue('password', pwds) } } }, { sequelize, tableName: 'users' }) module.exports = Users;
参考 https://github.com/demopark/sequelize-docs-Zh-CN/blob/master/models-definition.md
常用增删改查:https://itbilu.com/nodejs/npm/VJIR1CjMb.html#model-attributes
发表评论
侧栏公告
寄语
譬如朝露博客是一个分享前端知识的网站,联系方式11523518。
热评文章
标签列表
热门文章
友情链接