mongoose进阶,mongoose高级方法;默认值,模式修饰符,虚拟属性,索引;

总体介绍:这里分别记录mongoose中  模式的扩展,模型方法,数据校验,中间件,DBRef(集合之间的数据引用

 

1:模式的扩展:默认值,模式修饰符,虚拟属性,索引;

默认值:一个模型初始化时,不对它进行赋值,他也会存在默认值,有默认值和及时生成的值;

/**
 * Created by 1 on 2016/4/9.
 */
var mongoose=require('mongoose');
uri ="mongodb://localhost/test";

mongoose.connect(uri);

var SchoolSchema=new mongoose.Schema({

    sage:String,
    //设置默认值为nanchang
    sname:{
        type:String,
        default:'nanhang'
    },
    //设置默认值为当前时间
    stime:{
        type:Date,
        default:Date.now
    }
});

var School=mongoose.model('School',SchoolSchema);

var school=new School();
school.sage='nanchang'
 console.log(school); 
 
 //输出:

"C:\Program Files\JetBrains\WebStorm 10.0.3\bin\runnerw.exe" "C:\Program Files\nodejs\node.exe" moshi.js
{ sname: 'nanhang',
  stime: Sat Apr 09 2016 16:48:30 GMT+0800 (中国标准时间),
  _id: 5708c1de9d5a5a3c1a7c4745,
  sage: 'nanchang' }

 模式修饰符:它包括预定义的模式修饰符,自定义的setter修饰符,自定义getter修饰符。(setter存,getter取数据)

var SchoolSchema=new mongoose.Schema({

    sage:String,
    sname:{
        type:String,
        //预定义修饰符:它会去掉前后的空字符串
        trim:true,
        default:'nanhang'
    },
    stime:{
        type:Date,
        default:Date.now
    }
});

var school=new School();
school.sage='   beijing   '
school.sname='   beijingdaxue    ';
 console.log(school);

//打印出结果 
"C:\Program Files\JetBrains\WebStorm 10.0.3\bin\runnerw.exe" "C:\Program Files\nodejs\node.exe" moshi2.js
{ sname: 'beijingdaxue',
  stime: Sat Apr 09 2016 16:57:44 GMT+0800 (中国标准时间),
  _id: 5708c408f6e4aa9c19e692eb,
  sage: '   beijing   ' }



//自定义set修饰符:添加到数据库之前操作:
var SchoolSchema=new mongoose.Schema({

    sage:String,
    sname:{
        type:String,
        //设置输出前,判断用户是否加了http://如果加了,直接返回,如果没加那么帮他加上,让后添加到数据库中
        set:function(sname){
            if(!sname) return sname;
            if(0!==sname.indexOf('http://')) sname='http://'+sname;
            return sname;
        }
    },
    stime:{
        type:Date,
        default:Date.now
    }
});


//打印出对象
var School=mongoose.model('School',SchoolSchema);

var school=new School();
school.sage='   beijing   '
school.sname='baidu.com';
 console.log(school);

//输出结果
"C:\Program Files\JetBrains\WebStorm 10.0.3\bin\runnerw.exe" "C:\Program Files\nodejs\node.exe" moshi2.js
{ stime: Sat Apr 09 2016 17:06:00 GMT+0800 (中国标准时间),
  _id: 5708c5f8d33867b419be7314,
  sage: '   beijing   ',
  sname: 'http://baidu.com' }

 

虚拟属性,有些数据我们是通过数据库里面的属性组合而来,如firstname+lastname  组合成fullname

var MynameSchema=new mongoose.Schema({

    firstname:String,
    lastname:String
});

//定义虚拟属性,fullname

MynameSchema.virtual('fullname').get(function(){
    return this.firstname+" "+this.lastname;
}) 


var name=new MyName({
    firstname:'kobe',
    lastname:'brynt'
});

console.log('user full name:'+name.fullname);

//虚拟属性的输出
"C:\Program Files\JetBrains\WebStorm 10.0.3\bin\runnerw.exe" "C:\Program Files\nodejs\node.exe" xuni.js
user full name:kobe brynt

//如果我们需要把对象以json形式打印出来:,加上:
MynameSchema.set('toJSON',{getters:true,virtual:true});

//打印语句;
console.log('user full name:'+name.fullname);
 console.log(name);
console

//输出:
user full name:kobe brynt
{ _id: 5708e751b979c7c41dd7c0c8,
  lastname: 'brynt',
  firstname: 'kobe' }
{"firstname":"kobe","lastname":"brynt","_id":"5708e751b979c7c41dd7c0c8","fullname":"kobe brynt","id":"5708e751b979c7c41dd7c0c8"}

索引:唯一索引(unique:true),辅助索引(index:true)

 

 

 

转载于:https://my.oschina.net/u/2480757/blog/655900

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值