(11)被迫吃芒果的前端工程師 - Mongoose - Number Validators

前言

接下來是關於 Number Validators 的部分,當然也會與 String Validators 會有一點雷同,但還是要注意一下寫法上的差異。

Number Validators

基本上 Number Validators 主要是三種驗證

  • min
  • max
  • enum

max/min

max/min 與 String Validators 的 maxLength/minLength 非常像,但要注意 max/min 是專屬於 Number 的,這邊我就新增一個使用者的年齡最小 18 歲,最大 99 歲

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
const UserSchema = new mongoose.Schema({
account: {
type: String,
required: true,
},
password: {
type: String,
required: true,
},
nickname: {
type: String,
required: [true, 'nickname is required.'],
minLength: 3,
maxLength: 20
},
age: {
type: Number,
min: 18,
max: 99,
},
job: {
type: String,
enum: [
'科技類',
'電子類',
'食品加工類',
'營造業',
]
},
createTime: {
type: Date,
default: Date.now,
}
});

enum

enum 的概念也是跟 String Validators 的 enum 是一樣的,舉例來講我儲存性別是用 0 跟 1 當作辨別

  • 0 女性
  • 1 男性
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
const UserSchema = new mongoose.Schema({
account: {
type: String,
required: true,
},
password: {
type: String,
required: true,
},
nickname: {
type: String,
required: [true, 'nickname is required.'],
minLength: 3,
maxLength: 20
},
age: {
type: Number,
min: 18,
max: 99,
},
gender: {
type: Number,
enum: [0, 1],
required: true,
},
job: {
type: String,
enum: [
'科技類',
'電子類',
'食品加工類',
'營造業',
]
},
createTime: {
type: Date,
default: Date.now,
}
});

那麼常見的 Validators 其實也就 String 與 Number,如果真的有需要的話,可以閱讀官方文件的SchemaTypes就好。