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 函数链之演变
Apr 07 Javascript
仅Firefox中链接A无法实现模拟点击以触发其默认行为
Jul 31 Javascript
jquery和javascript的区别(常用方法比较)
Jul 04 Javascript
让人蛋疼的JavaScript语法特性
Sep 30 Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
May 20 Javascript
jquery插件uploadify多图上传功能实现代码
Aug 12 Javascript
vue.js+Echarts开发图表放大缩小功能实例
Jun 09 Javascript
VUE 实现滚动监听 导航栏置顶的方法
Sep 11 Javascript
使用wxapp-img-loader自定义组件实现微信小程序图片预加载功能
Oct 18 Javascript
vue.js实现备忘录demo
Jun 26 Javascript
Node.js Domain 模块实例详解
Mar 18 Javascript
在react中使用vue的状态管理的方法示例
May 02 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读取30天之内的根据算法排序的代码
2008/04/06 PHP
php 8小时时间差的解决方法小结
2009/12/22 PHP
php小技巧之过滤ascii控制字符
2014/05/14 PHP
php中函数前加&符号的作用分解
2014/07/08 PHP
详解yii2实现分库分表的方案与思路
2017/02/03 PHP
js如何判断不同系统的浏览器类型
2013/10/28 Javascript
jQuery实现下拉框功能实例代码
2016/05/06 Javascript
仿百度换肤功能的简单实例代码
2016/07/11 Javascript
js中document.referrer实现移动端返回上一页
2017/02/22 Javascript
AngularJS 验证码60秒倒计时功能的实现
2017/06/05 Javascript
JavaScript基于activexobject连接远程数据库SQL Server 2014的方法
2017/07/12 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
vue父组件中获取子组件中的数据(实例讲解)
2017/09/27 Javascript
vue axios基于常见业务场景的二次封装的实现
2018/09/21 Javascript
JavaScript实现学生在线做题计时器功能
2018/12/05 Javascript
jQuery实现全选、反选和不选功能的方法详解
2019/12/04 jQuery
基于element-ui封装可搜索的懒加载tree组件的实现
2020/05/22 Javascript
详解JavaScript中分解数字的三种方法
2021/01/05 Javascript
python制作一个桌面便签软件
2015/08/09 Python
Python numpy线性代数用法实例解析
2019/11/15 Python
python解析多层json操作示例
2019/12/30 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
2020/03/25 Python
selenium+超级鹰实现模拟登录12306
2021/01/24 Python
露营世界:Camping World
2017/02/02 全球购物
介绍一下MYSQL常用的优化技巧
2012/10/25 面试题
Java如何读取CLOB字段
2013/10/10 面试题
儿科护士自我鉴定
2013/10/14 职场文书
老师推荐信
2013/10/28 职场文书
报关报检委托书
2014/04/08 职场文书
捐款倡议书怎么写
2014/05/13 职场文书
企业财务人员岗位职责
2015/04/14 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书
Python基于Opencv识别两张相似图片
2021/04/25 Python
利用python Pandas实现批量拆分Excel与合并Excel
2021/05/23 Python
剑指Offer之Java算法习题精讲二叉树的构造和遍历
2022/03/21 Java/Android