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 相关文章推荐
jQuery 全选效果实现代码
Mar 23 Javascript
JS对外部文件的加载及对IFRMAME的加载的实现,当加载完成后,指定指向方法(方法回调)
Jul 04 Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
Sep 14 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
Apr 24 Javascript
javascript中innerText和innerHTML属性用法实例分析
May 13 Javascript
Bootstrap分页插件之Bootstrap Paginator实例详解
Oct 15 Javascript
jquery滚动条插件(可以自定义)
Dec 11 Javascript
JavaScript实现Fly Bird小游戏
Dec 15 Javascript
深入理解vue Render函数
Jul 19 Javascript
Angular ng-animate和ng-cookies用法详解
Apr 18 Javascript
还不懂递归?读完这篇文章保证你会懂
Jul 29 Javascript
jquery实现简单拖拽效果
Jul 20 jQuery
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
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
2014/10/26 PHP
php使用gettimeofday函数返回当前时间并存放在关联数组里
2015/03/19 PHP
浅谈PHP中其他类型转化为Bool类型
2016/03/28 PHP
基于laravel-admin 后台 列表标签背景的使用方法
2019/10/03 PHP
13个绚丽的Jquery 界面设计网站推荐
2010/09/28 Javascript
Javascript处理DOM元素事件实现代码
2012/05/23 Javascript
javascript中数组的sort()方法的使用介绍
2013/12/18 Javascript
JS获取几种URL地址的方法小结
2014/02/26 Javascript
jquery live()调用不存在的解决方法
2014/02/26 Javascript
Javascript中的包装类型介绍
2015/04/02 Javascript
JavaScript函数参数的传递方式详解
2017/03/06 Javascript
基于vue2.0+vuex的日期选择组件功能实现
2017/03/13 Javascript
vue注册组件的几种方式总结
2018/03/08 Javascript
使用vue-cli导入Element UI组件的方法
2018/05/16 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
2018/06/04 Javascript
解决vue中监听input只能输入数字及英文或者其他情况的问题
2018/08/30 Javascript
react在安卓中输入框被手机键盘遮挡问题的解决方法
2018/09/03 Javascript
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
2019/05/04 jQuery
Python的标准模块包json详解
2017/03/13 Python
Python使用functools实现注解同步方法
2018/02/06 Python
python使用tornado实现简单爬虫
2018/07/28 Python
Python元组常见操作示例
2019/02/19 Python
Python超越函数积分运算以及绘图实现代码
2019/11/20 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
2020/02/09 Python
IntelliJ 中配置 Anaconda的过程图解
2020/06/01 Python
基于Python爬虫采集天气网实时信息
2020/06/05 Python
CSS3弹性盒模型开发笔记(三)
2016/04/26 HTML / CSS
HTML5实现视频弹幕功能
2019/08/09 HTML / CSS
什么是Assembly(程序集)
2014/09/14 面试题
团支部建设方案
2014/05/02 职场文书
2015年党风廉政建设责任书
2015/01/29 职场文书
中学综治宣传月活动总结
2015/05/07 职场文书
红色电影观后感
2015/06/18 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书
改进工作作风心得体会
2016/01/23 职场文书
Java生成日期时间存入Mysql数据库的实现方法
2022/03/03 Java/Android