mongoose设置unique不生效问题的解决及如何移除unique的限制


Posted in Javascript onNovember 07, 2017

前言

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
由JavaScript中call()方法引发的对面向对象继承机制call的思考
Sep 12 Javascript
JS 操作符整理[推荐收藏]
Nov 15 Javascript
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
Apr 26 Javascript
在javascript中实现函数数组的方法
Dec 25 Javascript
灵活使用数组制作图片切换js实现
Jul 28 Javascript
深入理解jQuery.data() 的实现方式
Nov 30 Javascript
学习使用jQuery表单验证插件和日历插件
Feb 13 Javascript
vue实现路由懒加载及组件懒加载的方式
Jun 11 Javascript
微信小程序如何实现五星评价功能
Oct 15 Javascript
Vue数字输入框组件示例代码详解
Jan 15 Javascript
使用Karma做vue组件单元测试的实现
Jan 16 Javascript
Vue 使用typescript如何优雅的调用swagger API
Sep 01 Javascript
vue组件父与子通信详解(一)
Nov 07 #Javascript
vue组件父子间通信之综合练习(聊天室)
Nov 07 #Javascript
Mint UI 基于 Vue.js 移动端组件库
Nov 07 #Javascript
vue中SPA单页面应用程序详解
Nov 07 #Javascript
vue-router实现组件间的跳转(参数传递)
Nov 07 #Javascript
详解Vue路由钩子及应用场景(小结)
Nov 07 #Javascript
Vue-Router实现组件间跳转的三种方法
Nov 07 #Javascript
You might like
深入file_get_contents与curl函数的详解
2013/06/25 PHP
php定义一个参数带有默认值的函数实例分析
2015/03/16 PHP
PHP微信PC二维码登陆的实现思路
2017/07/13 PHP
laravel 解决强制跳转 https的问题
2019/10/22 PHP
cument.execCommand()用法深入理解
2012/12/04 Javascript
jfinal与bootstrap的登录跳转实战演习
2015/09/22 Javascript
理解javascript中的MVC模式
2016/01/28 Javascript
jQuery siblings()用法实例详解
2016/04/26 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
2017/07/05 NodeJs
详解基于vue-cli配置移动端自适应
2018/01/13 Javascript
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
2018/01/24 Javascript
详解Vue打包优化之code spliting
2018/04/09 Javascript
node版本管理工具n包使用教程详解
2018/11/09 Javascript
jQuery中实现text()的方法
2019/04/04 jQuery
JavaScript回调函数callback用法解析
2020/01/14 Javascript
vue父子组件间引用之$parent、$children
2020/05/20 Javascript
vue-router懒加载的3种方式汇总
2021/02/28 Vue.js
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
Python实现二叉搜索树
2016/02/03 Python
Mac中升级Python2.7到Python3.5步骤详解
2017/04/27 Python
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
Python实现PS滤镜的旋转模糊功能示例
2018/01/20 Python
python实现QQ空间自动点赞功能
2019/04/09 Python
使用Python实现毫秒级抢单功能
2019/06/06 Python
Python 实现数据结构-堆栈和队列的操作方法
2019/07/17 Python
Python+kivy BoxLayout布局示例代码详解
2020/12/28 Python
Strawberrynet草莓网新加坡站:护肤、彩妆、香水及美发产品
2018/08/31 全球购物
儿科护士实习自我鉴定
2013/10/17 职场文书
办公室文员工作职责
2014/01/31 职场文书
《我的信念》教学反思
2014/02/15 职场文书
房屋分割离婚协议书范本
2014/12/01 职场文书
公务员个人年终总结
2015/02/12 职场文书
2015年文员个人工作总结
2015/04/09 职场文书
2015年团支部年度工作总结
2015/05/27 职场文书
2016年寒假生活小结
2015/10/10 职场文书