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 相关文章推荐
一页面多XMLHttpRequest对象
Jan 22 Javascript
js中将多个语句写成一个语句的两种方法小结
Dec 08 Javascript
使用基于jquery的gamequery插件做JS乒乓球游戏
Jul 31 Javascript
jQuery validate插件实现ajax验证重复的2种方法
Jan 22 Javascript
JS判断非空至少输入两个字符的简单实现方法
Jun 23 Javascript
React Native实现进度条弹框的示例代码
Jul 17 Javascript
bootstrap table表格客户端分页实例
Aug 07 Javascript
详解Webpack实战之构建 Electron 应用
Dec 25 Javascript
JS动画实现回调地狱promise的实例代码详解
Nov 08 Javascript
在Vant的基础上封装下拉日期控件的代码示例
Dec 05 Javascript
Vue 列表页带参数进详情页的操作(router-link)
Nov 13 Javascript
基于javascript实现移动端轮播图效果
Dec 21 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
全国FM电台频率大全 - 1 北京市
2020/03/11 无线电
PHP5中的时间相差8小时的解决办法
2008/03/28 PHP
解析php函数method_exists()与is_callable()的区别
2013/06/21 PHP
编写PHP脚本使WordPress的主题支持Widget侧边栏
2015/12/14 PHP
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
php+iframe 实现上传文件功能示例
2020/03/04 PHP
JavaScript arguments 多参传值函数
2010/10/24 Javascript
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性
2011/08/28 Javascript
一个基于jQuery的树型插件(OrangeTree)使用介绍
2012/05/03 Javascript
web网页按比例显示图片实现原理及js代码
2013/08/09 Javascript
Javascript学习笔记之 对象篇(四) : for in 循环
2014/06/24 Javascript
jquery中append()与appendto()用法分析
2014/11/14 Javascript
jquery加载图片时以淡入方式显示的方法
2015/01/14 Javascript
JavaScript中Window对象的属性及事件
2015/12/25 Javascript
BootStrap和jQuery相结合实现可编辑表格
2016/04/21 Javascript
基于js对象,操作属性、方法详解
2016/08/11 Javascript
使用Angular.js开发的注意事项
2016/10/19 Javascript
javascript创建对象的3种方法
2016/11/02 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
2017/01/22 Javascript
走进javascript——不起眼的基础,值和分号
2017/02/24 Javascript
vue2.0 使用element-ui里的upload组件实现图片预览效果方法
2018/09/04 Javascript
js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解
2019/01/19 Javascript
微信小程序 scroll-view 水平滚动实现过程解析
2019/10/12 Javascript
Vue防止白屏添加首屏动画的实例
2019/10/31 Javascript
在vue中利用v-html按分号将文本换行的例子
2019/11/14 Javascript
Javascript 类型转换、封闭函数及常见内置对象操作示例
2019/11/15 Javascript
Python脚本实现DNSPod DNS动态解析域名
2015/02/14 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
快速解决jupyter启动卡死的问题
2020/04/10 Python
Python基于smtplib模块发送邮件代码实例
2020/05/29 Python
使用OpenCV实现人脸图像卡通化的示例代码
2021/01/15 Python
顺丰快递Java软件工程师面试题
2015/07/31 面试题
英语专业个人求职信范文
2014/02/01 职场文书
英语通知范文
2015/04/22 职场文书
企业法律事务工作总结
2015/08/11 职场文书
源码安装apache脚本部署过程详解
2022/09/23 Servers