猫鼬设置独特不生效怎么办

  介绍

小编给大家分享一下猫鼬设置独特不生效怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

独特属于模式约束验证中的一员,他的作用主要就是让某一个字段的值具有唯一性(不能重复)

保持字段的唯一性使用值类型:<代码>{类型:字符串,独特:真的,dropDups:真正}

<强>注意:猫鼬一旦修改了数据存储的机构,数据库一定要重启,很多新手在设置一些属性不生效时都是这个原因

这里说的重启,不是简单的关闭猫鼬数据库服务器重新打开,而是先将该数据库整个删除,然后再重启数据库服务

<强>简单的模式特殊用法示例

//导入模块      var  mongoose =,要求(& # 39;猫鼬# 39;);//连接数据库   mongoose.connect (& # 39; mongodb://localhost/itheima& # 39;);//创建模式//模式第一个参数是我们自定义的数据类型,第二个参数是管理模式默认的数据类型   var  studentSchema =, mongoose.Schema ({   ,名字:{类型:字符串,要求:真},//数据类型为字符串,不能非空   ,年龄:{类型:数量,默认值:18},//数据类型为字符串,默认值18   ,study_id:{类型:数量,选择:真},//学号,默认查询字段   ,地址:{类型:字符串,小写:真},//地址,默认小写   ,电子邮件:{类型:字符串匹配:正则表达式(/^ ([a-zA-Z0-9_ -]) + @ ([a-zA-Z0-9_ -]) + ([a-zA-Z0-9_ -]) +/)},//邮箱,正则表达式验证   ,电话:{类型:字符串,独特:真的,dropDups:,真正}//电话号码唯一性   }, {   versionKey才能:假的,//去掉版本锁,__v0      ,时间戳:{,createdAt: & # 39; createTime& # 39;,, updatedAt:, & # 39; updateTime& # 39;,}//自动管理修改时间      });//创建模型      var  student =, mongoose.model(& # 39;学生# 39;,studentSchema);//创建实体      var  zhangsan =, new 学生({   ,名字:& # 39;zhangsan& # 39;//名字必须要有,否则会报错:,名字:,Path “名字”,is 必需的。   ,地址:& # 39;ZhongLiang& # 39;//字符串都会变成小写   ,电子邮件:& # 39;a12345@qq.com& # 39;,//邮箱格式不对,添加会报错,Path “电子邮件”,is  invalid  (a12345qq.com)。   ,study_id: 2017001,   ,电话:& # 39;123456789 & # 39;//在添加唯一性字段时,猫鼬会先查询数据库所有的手机值,一旦发现该值已存在则会报的错   });//添加数据            student.create (zhangsan、功能(err) {      ,如果(err) {   throw 才能,犯错;   ,}      ,console.log(& # 39;插入成功& # 39;,+,zhangsan);      });

<强>猫鼬移除独特的限制

程序中邮件最开始设置了唯一的限制,导致电子邮件在此集合中无法重复插入,现在想要移除独特的限制。

db.your_collection.dropIndexes ();

以上是“猫鼬设置独特不生效怎么办”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

猫鼬设置独特不生效怎么办