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 new一个对象的实质
Jan 07 Javascript
textarea中的手动换行处理的jquery代码
Feb 26 Javascript
基于jquery的blockui插件显示弹出层
Apr 14 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
Nov 08 Javascript
JS获取IP、MAC和主机名的五种方法
Nov 14 Javascript
js中判断变量类型函数typeof的用法总结
Aug 09 Javascript
Vue.js 2.0 和 React、Augular等其他前端框架大比拼
Oct 08 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
Dec 08 Javascript
详解jQuery中的DOM操作
Dec 23 Javascript
基于JS实现html中placeholder属性提示文字效果示例
Apr 19 Javascript
JavaScript枚举选择jquery插件代码实例
Nov 17 jQuery
JS实现公告上线滚动效果
Jan 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 array_walk() 数组函数
2011/07/12 PHP
用 Composer构建自己的 PHP 框架之基础准备
2014/10/30 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
2015/07/31 PHP
php使用timthumb生成缩略图的方法
2016/01/22 PHP
mapper--图片热点区域高亮组件官方站点
2007/12/22 Javascript
把jQuery的类、插件封装成seajs的模块的方法
2014/03/12 Javascript
使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)
2016/11/12 Javascript
JavaScript严格模式下关于this的几种指向详解
2017/07/12 Javascript
浅析JS中常用类型转换及运算符表达式
2017/07/23 Javascript
JavaScript模块模式实例详解
2017/10/25 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
2020/07/28 Javascript
javascript实现简易计算器功能
2020/09/23 Javascript
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
使用Python的Twisted框架构建非阻塞下载程序的实例教程
2016/05/25 Python
一份python入门应该看的学习资料
2018/04/11 Python
Python切片索引用法示例
2018/05/15 Python
Python用5行代码写一个自定义简单二维码
2018/10/21 Python
python获取中文字符串长度的方法
2018/11/14 Python
如何利用Python分析出微信朋友男女统计图
2019/01/25 Python
dataframe 按条件替换某一列中的值方法
2019/01/29 Python
利用Python实现微信找房机器人实例教程
2019/03/10 Python
解决python xx.py文件点击完之后一闪而过的问题
2019/06/24 Python
django 快速启动数据库客户端程序的方法示例
2019/08/16 Python
Python 实现OpenCV格式和PIL.Image格式互转
2020/01/09 Python
python同时遍历两个list用法说明
2020/05/02 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
购买英国原创艺术:Art Gallery
2018/08/25 全球购物
New Balance澳大利亚官网:运动鞋和健身服装
2019/02/23 全球购物
社区戒毒工作方案
2014/06/04 职场文书
土建施工员岗位职责
2014/07/16 职场文书
医学检验专业自荐信
2014/09/18 职场文书
学校勤俭节约倡议书
2015/04/29 职场文书
鉴史问廉观后感
2015/06/10 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书
javascript的setTimeout()使用方法总结
2021/11/20 Javascript