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

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

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

 // 创建Schema对象
var loginSchema = new Schema({
    username:{
        type:String,
        unique:true
    },
    password:{type:String}
})

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

解决办法:

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

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

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

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

// 注册接口
router.post('/api/register.do',async (req,res)=>{
  const user = await LoginModel.create({
    username:req.body.username,
    password:req.body.password
  },function(err){
    if(!err){
      console.log('注册成功');
    }else{
      console.log('注册失败')
    }
  })
  res.send(user);
  res.end();
})

-------完。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柠檬不萌只是酸i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值