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 相关文章推荐
实现点击列表弹出列表索引的两种方式
Mar 08 Javascript
js判断字符长度以及中英文数字等
Dec 31 Javascript
通过复制Table生成word和excel的javascript代码
Jan 20 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
Jun 23 Javascript
JS获取下拉框显示值和判断单选按钮的方法
Jul 09 Javascript
jquery实现超简单的瀑布流布局【推荐】
Mar 08 Javascript
详解vuejs之v-for列表渲染
Jun 22 Javascript
js实现加载页面就自动触发超链接的示例
Aug 31 Javascript
浅析Javascript中双等号(==)隐性转换机制
Oct 27 Javascript
jQuery实现动态显示select下拉列表数据的方法
Feb 05 jQuery
vue实现扫码功能
Jan 17 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
Sep 10 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实现用于删除整个目录的递归函数
2015/03/16 PHP
php根据用户名和手机号查询是否存在手机号码
2017/02/16 PHP
PHP单例模式简单用法示例
2017/06/23 PHP
javascript 禁止复制网页
2009/06/11 Javascript
JavaScript 异步方法队列链实现代码分析
2010/06/05 Javascript
js 可拖动列表实现代码
2011/12/13 Javascript
javascript 中that的含义示例介绍
2014/05/14 Javascript
javaScript实现滚动新闻的方法
2015/07/30 Javascript
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
javascript基本算法汇总
2016/03/09 Javascript
javascript实现简单计算器效果【推荐】
2016/04/19 Javascript
浅谈jQuery animate easing的具体使用方法(推荐)
2016/06/17 Javascript
微信小程序开发之录音机 音频播放 动画实例 (真机可用)
2016/12/08 Javascript
jQuery Tree Multiselect使用详解
2017/05/02 jQuery
基于daterangepicker日历插件使用参数注意的问题
2017/08/10 Javascript
如何将你的AngularJS1.x应用迁移至React的方法
2018/02/01 Javascript
详解vue-loader在项目中是如何配置的
2018/06/04 Javascript
vuex 解决报错this.$store.commit is not a function的方法
2018/12/17 Javascript
vue实现可视化可拖放的自定义表单的示例代码
2019/03/20 Javascript
js实现继承的方法及优缺点总结
2019/05/08 Javascript
Python基于DES算法加密解密实例
2015/06/03 Python
Python连接phoenix的方法示例
2017/09/29 Python
Python Django实现layui风格+django分页功能的例子
2019/08/29 Python
Flask框架搭建虚拟环境的步骤分析
2019/12/21 Python
英国水族馆和池塘用品购物网站:Warehouse Aquatics
2019/08/29 全球购物
台湾全方位线上课程与职能学习平台:TibaMe
2019/12/04 全球购物
阿尔卡特(中国)的面试题目
2014/08/20 面试题
房地产销售计划书
2014/01/10 职场文书
药店营业员岗位职责
2015/04/14 职场文书
交通事故被告答辩状
2015/05/22 职场文书
校园安全主题班会
2015/08/12 职场文书
社会实践心得体会范文
2016/01/14 职场文书
微信小程序用户授权最佳实践指南
2021/05/08 Javascript
Java8中Stream的一些神操作
2021/11/02 Java/Android
Java异常体系非正常停止和分类
2022/06/14 Java/Android
Docker与K8s关系介绍不会Docker也可以使用K8s
2022/06/25 Servers