天天看点

Mongoose中的修饰符

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           

复制