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 相关文章推荐
关于COOKIE个数与大小的问题
Jan 17 Javascript
JavaScript中valueOf函数与toString方法深入理解
Dec 02 Javascript
jquery日历控件实现方法分享
Mar 07 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
May 03 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
Jun 23 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
Jul 13 Javascript
Bootstrap源码解读导航(6)
Dec 23 Javascript
js获取地址栏中传递的参数(两种方法)
Feb 08 Javascript
vue-router项目实战总结篇
Feb 11 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
Nov 18 Javascript
JS自定义右键菜单实现代码解析
Jul 16 Javascript
关于angular浏览器兼容性问题的解决方案
Jul 26 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
DedeCms模板安装/制作概述
2007/03/11 PHP
PHP根据IP地址获取所在城市具体实现
2013/11/27 PHP
基于jQuery的Spin Button自定义文本框数值自增或自减
2010/07/17 Javascript
JavaScript 选中文字并响应获取的实现代码
2011/08/28 Javascript
jquery交替变换颜色的三种方法 实例代码
2013/11/19 Javascript
jquery动态改变onclick属性导致失效的问题解决方法
2013/12/04 Javascript
node.js中的fs.fsync方法使用说明
2014/12/15 Javascript
基于jQuery实现最基本的淡入淡出效果实例
2015/02/02 Javascript
浅谈javascript中的constructor
2016/06/08 Javascript
JavaScript DOM 对象深入了解
2016/07/20 Javascript
AngularJs  Understanding Angular Templates
2016/09/02 Javascript
预防网页挂马的方法总结
2016/11/03 Javascript
简单实现bootstrap选项卡效果
2017/02/08 Javascript
js获取当前页的URL与window.location.href简单方法
2017/02/13 Javascript
vue-axios使用详解
2017/05/10 Javascript
Vue + better-scroll 实现移动端字母索引导航功能
2018/05/07 Javascript
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
jQuery实现ajax的嵌套请求案例分析
2019/02/16 jQuery
如何基于vue-cli3.0构建功能完善的移动端架子
2019/04/24 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
vuex 动态注册方法 registerModule的实现
2019/07/03 Javascript
vue远程加载sfc组件思路详解
2019/12/25 Javascript
如何利用JavaScript编写一个格斗小游戏
2021/01/06 Javascript
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
2015/05/05 Python
Python基于二分查找实现求整数平方根的方法
2016/05/12 Python
深入理解Django的中间件middleware
2018/03/14 Python
基于python调用psutil模块过程解析
2019/12/20 Python
如何使用Pytorch搭建模型
2020/10/26 Python
用 Django 开发一个 Python Web API的方法步骤
2020/12/03 Python
CSS3 Notes: -webkit-box-reflect实现倒影的实例
2016/12/08 HTML / CSS
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
无工作经验者个人求职信范文
2013/12/22 职场文书
原料仓仓管员岗位职责
2014/07/08 职场文书
2015年医院护理部工作总结
2015/04/23 职场文书
导游词之太湖
2019/10/08 职场文书
使用这 6个Vue加载动画库来减少我们网站的跳出率
2021/05/18 Vue.js