一、数据校验的介绍
在
mysql
数据库层面中常见的数据校验,非空字段
二、mongoose
中自带的数据校验
- 1、
required
表示这个数据必须传入 - 2、
max
用于Number
类型数据,允许的最大值 - 3、
min
用于Number
类型数据,允许的最小值 - 4、
enum
枚举类型,要去数据必须满足枚举值里面的其中一个 - 5、
match
增加数据必须符合match
的正则规则 - 6、
maxlength
最大长度 - 7、
minlength
最小长度
三、在schema
中使用数据校验
-
1、定义
schema
const mongoose = require('./db'); const userSchema = mongoose.Schema({ name: { type: String, require: [true, '此项为必填内容'], // 需要自己去写获取其中的错误 minlength: [3, '名字最小长度为3'], maxlength: [10, '名字最长为10'], }, age: { type: Number, max: 150, min: 0, }, status: { type: String, enum: ['0', '1', '2'] }, phone: { type: Number, match: /^1[3456789]\d{9}$/ } }) module.exports = mongoose.model('User', userSchema, 'user');
-
2、增加数据的时候数据校验
const UserModel = require('./model/user'); const user = new UserModel({ name: '李四', age: 20, status: 3, phone: 181706066 }); user.save((err) => { if (err) { console.log('-------遍历全部的错误开始---------') Object.keys(err.errors).forEach(item => { console.log(err.errors[item].message); }) console.log('-------遍历全部的错误结束---------') } else { console.log('增加数据成功'); } });
四、自定义校验器
-
1、在
schema
中定义const mongoose = require('./db'); const userSchema = mongoose.Schema({ address: { type: String, require: true, // 方式一:简单定义 // 自定义的验证器,如果通过验证返回 true,没有通过则返回 false // validate: function (desc) { // return desc.length >= 10; // }, // 方式二:需要定义错误提示的方式 validate: { validator: function(desc) { return desc.length >= 10; }, message: '长度必须大于10', } } }) module.exports = mongoose.model('User', userSchema, 'user');
-
2、校验和上面的一样的