mongoose設置unique不生效問題解決

  • 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);

});
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章