- 1.unique屬於schema約束驗證中的一員,他的作用主要就是讓某一個字段的值具有唯一性(不能重複)
- 2.保持字段的唯一性使用type值:{type:String,unique:true,dropDups: true}
3.mongoose一旦修改了數據存儲的機構,數據庫一定要重啓,很多新手在設置一些屬性不生效時都是這個原因
- 這裏說的重啓,不是簡單的關閉mongoose數據庫服務器重新打開,而是先將該數據庫整個刪除,然後再重啓數據庫服務
4.以下代碼是一個簡單的schema特殊用法示例
//導入模塊
var mongoose = require('mongoose');
//連接數據庫
mongoose.connect('mongodb://localhost/itheima');
//創建schema
//schema第一個參數是我們自定義的數據類型 第二個參數是管理schema默認的數據類型
var studentSchema = mongoose.Schema({
name:{type:String,required:true},//數據類型爲string,不能非空
age:{type:Number,default:18},//數據類型爲string,默認值18
study_id:{type:Number,select:true},//學號,默認查詢字段
address:{type:String,lowercase:true},//地址,默認小寫
email:{type:String,match:RegExp(/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/)},//郵箱,正則表達式驗證
phone:{type:String,unique:true,dropDups: true}//電話號碼唯一性
},{
versionKey: false,//去掉版本鎖 __v0
timestamps: { createdAt: 'createTime', updatedAt: 'updateTime' }//自動管理修改時間
});
//創建model
var student = mongoose.model('student',studentSchema);
//創建Entity
var zhangsan = new student({
name:'zhangsan',//名字必須要有,否則會報錯: name: Path `name` is required.
address:'ZhongLiang',//字符串都會變成小寫
email:'[email protected]',//郵箱格式不對,添加會報錯 Path `email` is invalid (a12345qq.com).
study_id:2017001,
phone:'123456789'//在添加唯一性字段時,mongoose會先查詢數據庫所有的phone值,一旦發現該值已存在則會報錯
});
//添加數據
student.create(zhangsan,function(err){
if(err){
throw err;
}
console.log('插入成功' + zhangsan);
});