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();
})
-------完。