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 Date对象使用总结
May 14 Javascript
JavaScript中的几个关键概念的理解-原型链的构建
May 12 Javascript
js图片向右一张张滚动效果实例代码
Nov 23 Javascript
JavaScript 开发工具webstrom使用指南
Dec 09 Javascript
简单谈谈javascript中this的隐式绑定
Feb 22 Javascript
javascript的正则匹配方法学习
Feb 24 Javascript
用JS动态改变表单form里的action值属性的两种方法
May 25 Javascript
值得分享和收藏的xmlplus组件学习教程
May 05 Javascript
基于Vue实现后台系统权限控制的示例代码
Aug 29 Javascript
JS数组扁平化(flat)方法总结详解
Jun 24 Javascript
微信小程序个人中心的列表控件实现代码
Apr 26 Javascript
react基本安装与测试示例
Apr 27 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
简单的php中文转拼音的实现代码
2014/02/11 PHP
Yii中的cookie的发送和读取
2016/07/27 PHP
使用JS操作页面表格,元素的一些技巧
2007/02/02 Javascript
JQuery中each()的使用方法说明
2010/08/19 Javascript
遨游,飞飞,IE,空中网 浏览器无提示关闭方法
2011/07/11 Javascript
javascript限制文本框只允许输入数字(曾经与现在的方法对比)
2013/01/18 Javascript
浅析offsetLeft,Left,clientLeft之间的区别
2013/11/30 Javascript
js中对象的声明方式以及数组的一些用法示例
2013/12/11 Javascript
js判断游览器类型及版本号的代码
2014/05/11 Javascript
使用js画图之画切线
2015/01/12 Javascript
对js中回调函数的一些看法
2016/08/29 Javascript
原生js实现ajax方法(超简单)
2016/09/20 Javascript
在ES5与ES6环境下处理函数默认参数的实现方法
2018/05/13 Javascript
jQuery UI实现动画效果代码分享
2018/08/19 jQuery
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
2018/08/24 Javascript
Vue常见面试题整理【值得收藏】
2018/09/20 Javascript
解决vue+webpack项目接口跨域出现的问题
2020/08/10 Javascript
对于Python的框架中一些会话程序的管理
2015/04/20 Python
Python实现命令行通讯录实例教程
2016/08/18 Python
Python实现单词翻译功能
2017/06/06 Python
对Python 3.2 迭代器的next函数实例讲解
2018/10/18 Python
pytorch torch.expand和torch.repeat的区别详解
2019/11/05 Python
Django权限设置及验证方式
2020/05/13 Python
python数据抓取3种方法总结
2021/02/07 Python
css3气泡 css3关键帧动画创建的动态通知气泡
2013/02/26 HTML / CSS
canvas因为图片资源不在同一域名下而导致的跨域污染画布的解决办法
2019/01/18 HTML / CSS
创联软件面试题笔试题
2012/10/07 面试题
药学专业毕业生求职信
2013/10/20 职场文书
北京大学自荐信范文
2014/01/28 职场文书
社会学专业求职信
2014/02/24 职场文书
行政办公室岗位职责
2014/03/18 职场文书
2015年简历自我评价范文
2015/03/11 职场文书
2015年度护士个人工作总结
2015/04/09 职场文书
2016年9月份红领巾广播稿
2015/12/21 职场文书
Python实现制作销售数据可视化看板详解
2021/11/27 Python
python分分钟绘制精美地图海报
2022/02/15 Python