mongoose模式修饰符

mongoose模式修饰符

九月 10, 2018

一、预定义模式修饰符

mongoose 提供了一些预定义模式修饰符可以对我们增加的数据进行格式化。其中 lowercase/uppercase 可以转换字符串的大小写,trim 能够对字段两端去空格。在我们封装model的时候把预定义模式修饰符加进去,如下所示,就可以实现增加数据的格式化。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var UserSchema=mongoose.Schema({

name:{

type:String,
name:trim
},
age:Number,
status:{

type:Number,
default:1
}
})

这样当我们增加的数据 name 为“ Tom ”时,实际录入的 name 就被格式化成了“Tom”。大小写的转换也是同样的道理。

二、自定义模式修饰符

除了 mongoose 内置的修饰符以外,我们还可以通过 set(建议使用)修饰符在增加数据的时候对数据进行格式化。也可以通过 get(不建议使用)在实例获取 model 里面数据的时候对数据进行格式化。
下面这个例子展示了 set 修饰符的用法,实现了把地址加上’http://‘的格式化:

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
var mongoose=require('./db.js');

var FocusSchema=mongoose.Schema({

title:{

type:String,
lowercase:true //预定义的小写格式化
},
redirect:{

type:String,
set(parmas){ //增加数据的时候对redirect字段进行处理,parmas可以获取redirect的值
if(!parmas){
return ''
}else{
if(parmas.indexOf('http://')!=0 && parmas.indexOf('https://')!=0){
//indexOf查找位置,如果在首位则返回0,不存在则返回-1,如果在后面则返回的是正数
return 'http://'+parmas;
}
return parmas
}
}
},
status:{

type:Number,
default:1
}
})

module.exports=mongoose.model('Focus',FocusSchema,'focus');

即如果用户输入的是 www.baidu.com, 则保存为 http://www.baidu.com;如果是 http://www.baidu.com,则仍为 http://www.baidu.com