解决mongoose中的Schema设置unique不生效问题?

朴灿烈づ我的快乐病毒、 2023-05-30 09:00 126阅读 0赞

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

例如:用户名不能重复,我们可以这样设置(如下)

  1. // 创建Schema对象
  2. var loginSchema = new Schema({
  3. username:{
  4. type:String,
  5. unique:true
  6. },
  7. password:{type:String}
  8. })

但是,设置了unique:true 约束后,再次注册的时候,还会会将同名的用户名注册成功。

解决办法:

(1)之前注册的同名的用户名在数据库里面是无法去除,只有清除掉该数据库表。

db.logins.drop() # db.数据库中表名.drop()

(2)断开数据库连接,重新连接数据库,再次注册的时候,unique:true就会生效。【mongoose一旦修改了数据存储的机构,数据库一定要重启,不然类似unique:true这样的操作就会失效。】

-————-重启完后,可以使用注册接口测试下奥。——————-

  1. // 注册接口
  2. router.post('/api/register.do',async (req,res)=>{
  3. const user = await LoginModel.create({
  4. username:req.body.username,
  5. password:req.body.password
  6. },function(err){
  7. if(!err){
  8. console.log('注册成功');
  9. }else{
  10. console.log('注册失败')
  11. }
  12. })
  13. res.send(user);
  14. res.end();
  15. })

-———完。

发表评论

表情:
评论列表 (有 0 条评论,126人围观)

还没有评论,来说两句吧...

相关阅读