mongoose設(shè)置unique不生效問題的解決及如何移除unique的限制
前言
unique屬于schema約束驗(yàn)證中的一員,他的作用主要就是讓某一個字段的值具有唯一性(不能重復(fù))
保持字段的唯一性使用type值: {type:String,unique:true,dropDups: true}
注意:mongoose一旦修改了數(shù)據(jù)存儲的機(jī)構(gòu),數(shù)據(jù)庫一定要重啟,很多新手在設(shè)置一些屬性不生效時都是這個原因
這里說的重啟,不是簡單的關(guān)閉mongoose數(shù)據(jù)庫服務(wù)器重新打開,而是先將該數(shù)據(jù)庫整個刪除,然后再重啟數(shù)據(jù)庫服務(wù)
簡單的schema特殊用法示例
//導(dǎo)入模塊
var mongoose = require('mongoose');
//連接數(shù)據(jù)庫
mongoose.connect('mongodb://localhost/itheima');
//創(chuàng)建schema
//schema第一個參數(shù)是我們自定義的數(shù)據(jù)類型 第二個參數(shù)是管理schema默認(rèn)的數(shù)據(jù)類型
var studentSchema = mongoose.Schema({
name:{type:String,required:true},//數(shù)據(jù)類型為string,不能非空
age:{type:Number,default:18},//數(shù)據(jù)類型為string,默認(rèn)值18
study_id:{type:Number,select:true},//學(xué)號,默認(rèn)查詢字段
address:{type:String,lowercase:true},//地址,默認(rèn)小寫
email:{type:String,match:RegExp(/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/)},//郵箱,正則表達(dá)式驗(yàn)證
phone:{type:String,unique:true,dropDups: true}//電話號碼唯一性
},{
versionKey: false,//去掉版本鎖 __v0
timestamps: { createdAt: 'createTime', updatedAt: 'updateTime' }//自動管理修改時間
});
//創(chuàng)建model
var student = mongoose.model('student',studentSchema);
//創(chuàng)建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會先查詢數(shù)據(jù)庫所有的phone值,一旦發(fā)現(xiàn)該值已存在則會報錯
});
//添加數(shù)據(jù)
student.create(zhangsan,function(err){
if(err){
throw err;
}
console.log('插入成功' + zhangsan);
});
Mongoose 移除unique的限制
程序中email最開始設(shè)置了unque限制,導(dǎo)致email在此collection中無法重復(fù)插入,現(xiàn)在想要移除unique限制。
db.your_collection.dropIndexes();
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
node.js中使用node-schedule實(shí)現(xiàn)定時任務(wù)實(shí)例
這篇文章主要介紹了node.js中使用node-schedule實(shí)現(xiàn)定時任務(wù)實(shí)例,包括安裝方法和4種使用例子,需要的朋友可以參考下2014-06-06
Pycharm配置Node.js運(yùn)行js代碼詳細(xì)過程
在PyCharm中寫JavaScript代碼并進(jìn)行調(diào)試是非常方便的,但是有些用戶可能對如何在PyCharm中準(zhǔn)確地運(yùn)行JavaScript代碼感到困惑,這篇文章主要給大家介紹了關(guān)于Pycharm配置Node.js運(yùn)行js代碼的相關(guān)資料,需要的朋友可以參考下2023-11-11
Nodejs+express+html5 實(shí)現(xiàn)拖拽上傳
文件上傳是一個比較常見的功能,傳統(tǒng)的選擇方式的上傳比較麻煩,需要先點(diǎn)擊上傳按鈕,然后再找到文件的路徑,然后上傳。給用戶體驗(yàn)帶來很大問題。html5開始支持拖拽上傳的需要的api。nodejs也是一個最近越來越流行的技術(shù),這也是自己第一次接觸nodejs。2014-08-08
利用node.js啟動本地服務(wù)器的操作指南(超詳細(xì))
這篇文章主要介紹了利用node.js啟動本地服務(wù)器的操作指南(超詳細(xì)),有很多小伙伴制作網(wǎng)站或者小程序時,需要通過服務(wù)器來把前端和后端連接起來,那么我們今天學(xué)習(xí)啟動node.js服務(wù)器,文中有詳細(xì)的代碼示例和圖文供大家參考,具有一定的參考價值,需要的朋友可以參考下2024-05-05

