Mongoose提供了修饰符功能用于对存取的数据进行一些加工,常用的修饰符有以几下几种:
1. 预定义修饰符
1. lowercase 转小写
2. uppercase 转大写
3. trim 去掉前后空格
2. 自定义修饰符
1. set 设置数据,会将修饰过的数据处理入库。
2. get 获取实例数据时修饰,不会影响入库的数据,使用较少。
3. 预定义修饰符与自定义修饰符 set 实例(常用)
连接数据库,文件名为db.js
var mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1:27017/test', { useNewUrlParser: true }, function (err) {
if (err) {
console.log(err);
return;
}
console.log('数据库连接成功')
});
module.exports = mongoose;
复制
定义schema、生成模型,文件名为focus.js
// 引入自定义模块化的数据库连接
var mongoose = require('./db.js');
// 定义schema
var FocusSchema = mongoose.Schema({
title: {
type: String,
// 对title字段去掉前后的空格
trim: true
},
pic: String,
redirect: {
type: String,
// 自定义设置数据,parmas为当前的值
// 为域名添加协议
set(parmas) {
if (!parmas) {
return ''
} else {
if (parmas.indexOf('http://') != 0 && parmas.indexOf('https://') != 0) {
return 'http://' + parmas;
}
return parmas
}
}
},
status: {
type: Number,
default: 1
}
})
module.exports = mongoose.model('Focus', FocusSchema, 'focus');
复制
在需要进行数据操作的页面引入focus.js ,进行数据操作
var FocusModel = require('./model/focus.js');
var focus = new FocusModel({
title: " 国际新闻 ",
pic: 'http://www.xxx.com/x.png',
redirect: 'www.baidu.com'
});
focus.save(function (err) {
if (err) {
console.log(err);
return;
}
FocusModel.find({}, function (err, docs) {
if (err) {
console.log(err);
return;
}
console.log(docs);
// "国际新闻"将会去掉前后的空格
// www.baidu.com 将会变成 http://www.baidu.com
})
});
复制
4. 自定义修饰符 get 实例(不常用)
连接数据库,文件名为db.js
var mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1:27017/test', { useNewUrlParser: true }, function (err) {
if (err) {
console.log(err);
return;
}
console.log('数据库连接成功')
});
module.exports = mongoose;
复制
定义schema、生成模型,文件名为 user.js
var mongoose=require('./db.js');
var UserSchema=mongoose.Schema({
name:{
type:String,
// 将获取的实例数据添加标识符
get(params){
return "姓名:" + params
}
},
age:{
type:Number,
// 将获取的实例数据添加标识符
get(params){
return "年龄:"+ params;
}
},
status:{
type:Number,
default:1
}
})
module.exports=mongoose.model('User',UserSchema,'user');
复制
在需要进行数据操作的页面引入user.js ,进行数据操作,注意只能作用于生成的实例
var UserModel = require('./model/user.js');
var user = new UserModel({
name: '张三',
age: 20
});
console.log(user.name, user.age);
// 姓名:张三,年龄:20
复制