在创建集合时可以设置当前字段的验证规则,不符合规则就插入失败
//引用第三方模块
const mongoose = require('mongoose');
//连接数据库
mongoose.connect('mongodb://localhost/text', {
useNewUrlParser: true,
useUnifiedTopology: true
}).then(() => {
console.log("数据库连接成功");
}).catch(err => {
console.log(err);
})
//创建集合规则
const textSchema = new mongoose.Schema({
name: {
type: String,
//必选字段
required: [true, '你没传'],
minlength: 2, //规定最小传入的长度
maxlength: 5, //规定最大传入的长度
trim: true //插入的数据不包含空格
},
age: {
type: Number,
min: 10,
max: 50
},
publishDate: {
type: Date,
//默认值 是现在的时间
default: Date.now
},
category: {
type: String,
//enum列举当前字段可以拥有的值 传其他的会报错
enum:{
values:['a', 'b', 'c', 'd']
message:'只能传abcd' //自定义报错信息
}
},
author: {
type: String,
//自定义验证器
validate: {
validator: v => {
//返回一个布尔值
//true验证成功
//false验证失败
//v是要验证的值
return v && v.length > 10;
},
//自定义错误信息
message: '传入的值不符合验证规则'
}
}
})
//使用集合规则创建集合
const Jihe = mongoose.model('Jihe', textSchema);
//传入数据
Jihe.create({ name: 'fj', age: 18 }).then(
(re) => {
console.log(re);
}
).catch((err) => {
const error = err.errors;
for (var k in error) {
console.log(error[k]['message']); //打印错误信息
}
})
});