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 Ajax 跨域访问的解决方案
Mar 12 Javascript
基于JQuery的类似新浪微博展示信息效果的代码
Jul 23 Javascript
JS取request值以及自动执行使用示例
Feb 24 Javascript
将字符串中由空格隔开的每个单词首字母大写
Apr 06 Javascript
javascript闭包入门示例
Apr 30 Javascript
JavaScript语言对Unicode字符集的支持详解
Dec 30 Javascript
基于Jquery实现表单验证
Jul 20 Javascript
jQuery UI Bootstrap是什么?
Jun 17 Javascript
微信小程序 跳转方式总结
Apr 20 Javascript
js微信应用场景之微信音乐相册案例分享
Aug 11 Javascript
vue使用video.js进行视频播放功能
Jul 18 Javascript
Layui弹出层 加载 做编辑页面的方法
Sep 16 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也可以?成Shell Script
2006/10/09 PHP
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
2011/01/27 PHP
php页面缓存ob系列函数介绍
2012/10/18 PHP
PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
2014/11/19 PHP
SESSION存放在数据库用法实例
2015/08/08 PHP
List Installed Software Features
2007/06/11 Javascript
JavaScript设计模式之外观模式介绍
2014/12/28 Javascript
jquery处理页面弹出层查询数据等待操作实例
2015/03/25 Javascript
Jquery 整理元素选取、常用方法一览表
2016/11/26 Javascript
JavaScript用构造函数如何获取变量的类型名
2016/12/23 Javascript
jquery广告无缝轮播实例
2017/01/05 Javascript
js实现自动图片轮播代码
2017/03/22 Javascript
常用的 JS 排序算法 整理版
2018/04/05 Javascript
微信小程序上传多图到服务器并获取返回的路径
2019/05/05 Javascript
layui表格数据复选框回显设置方法
2019/09/13 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
2020/03/05 Javascript
Javascript实现简易天数计算器
2020/05/18 Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
2020/06/05 Javascript
vue Cli 环境删除与重装教程 - 版本文档
2020/09/11 Javascript
详解webpack的clean-webpack-plugin插件报错
2020/10/16 Javascript
[00:52]黑暗之门更新 新英雄孽主驾临DOTA2
2016/08/24 DOTA
python判断图片宽度和高度后删除图片的方法
2015/05/22 Python
numpy实现合并多维矩阵、list的扩展方法
2018/05/08 Python
对Python subprocess.Popen子进程管道阻塞详解
2018/10/29 Python
python切片的步进、添加、连接简单操作示例
2019/07/11 Python
python3实现带多张图片、附件的邮件发送
2019/08/10 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
python对指定字符串逆序的6种方法(小结)
2020/04/02 Python
python asyncio 协程库的使用
2021/01/21 Python
CSS3 text-shadow实现文字阴影效果
2016/02/24 HTML / CSS
欧舒丹加拿大官网:L’Occitane加拿大
2017/10/29 全球购物
英国最大的正宗复古足球衫制造商和零售商:TOFFS
2018/06/21 全球购物
Java基础面试题
2012/11/02 面试题
计算机网络工程专业职业生涯规划书
2014/03/10 职场文书
青年志愿者活动方案
2014/08/17 职场文书
运动会加油稿100字
2014/09/19 职场文书