MongoDB和Node(二)

MongoDB和Node(二)

在创建集合规则时,可以设置当前字段的验证规则,验证失败则输入插入失败。

理解:类似创建表的sql代码,设置规则

联系:语法很类似vue的props参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// 可以定义错误信息
const db = new mongoose.Schema({
title: {
type: String,
required: [true, '请传入文章标题'], // 必选字段
minlength: [2, '文章长度最小为2'], // 字段最小长度
maxlength: [5, '文章长度最大为5'], //字段最大长度
trim: true // 去除字段两端空格
},
age: {
type: Number,
min: [18, '年龄最小为18'], // 数值最小为18
max: [23, '年龄最大为23'] // 数值最大为23
},
time: {
type: Date,
default: Date.now // 默认值
},
category: {
type: String,
// 枚举,传入的值不是规定的值就验证失败
enum: {
values: ['love', 'like', 'thank'],
message: ''
}
},
author: {
type: String,
// 自定义验证规则
validate: {
// 返回布尔值 true验证成功 false验证失败 v就是传入的值
validator: v => {
return v && v.length > 4
},
// 自定义错误信息
message: '传入的值不符合验证规则'
}
}
})
const post = mongoose.model('Post', db)
post.create({ title: 'dyy222', age: 16, category: 'love22', author: 'you' })
.then(res => console.log(res))
.catch(error => {
// 将错误信息打印到控制台
const err = error.errors;
for (let attr in err) {
console.log(err[attr]['message']);
}
})

image-20210930105833249