您好,登錄后才能下訂單哦!
小編給大家分享一下mongoose設置unique不生效怎么辦,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
unique屬于schema約束驗證中的一員,他的作用主要就是讓某一個字段的值具有唯一性(不能重復)
保持字段的唯一性使用type值: {type:String,unique:true,dropDups: true}
注意:mongoose一旦修改了數據存儲的機構,數據庫一定要重啟,很多新手在設置一些屬性不生效時都是這個原因
這里說的重啟,不是簡單的關閉mongoose數據庫服務器重新打開,而是先將該數據庫整個刪除,然后再重啟數據庫服務
簡單的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:'a12345@qq.com',//郵箱格式不對,添加會報錯 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); });
Mongoose 移除unique的限制
程序中email最開始設置了unque限制,導致email在此collection中無法重復插入,現在想要移除unique限制。
db.your_collection.dropIndexes();
以上是“mongoose設置unique不生效怎么辦”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。