【发布时间】:2019-06-22 13:23:35
【问题描述】:
我有一个 mongo 数据库,其中包含 3 个集合,用于 3 种不同类型的用户,即用户、合作伙伴、管理员。每当有任何类型的新用户注册时,我都会搜索所有三个集合以检查用户名和电子邮件是否已经存在。我试图通过调用一个函数来实现这一点:
function checkAttribute(attr,val,callback){
User.find({attr: val},function(err,user){
if(err){
console.log(err);
}else{
if(user.length === 0){
Partner.find({attr: val},function(err,partner){
if(err){
console.log(err);
}else{
if(partner.length === 0){
Admin.find({attr: val},function(err,admin){
if(err){
console.log(err);
}else{
if(admin.length === 0){
return callback(null,true);
}else{
return callback(null,false);
}
}
});
}else{
return callback(null,false);
}
}
});
}else{
return callback(null,false);
}
}
});
};
调用函数行:
checkAttribute("username",newUser.username,function(error,response){
.......
});
但这不起作用,因为即使已经存在传递的用户名/电子邮件的用户,它也总是返回 true。我无法找到问题所在。有谁知道为什么会这样? 提前致谢。
【问题讨论】:
-
尝试使用 count() 查询
-
为什么你用返回回调(null,false)返回回调?即使你找到了用户。
-
@chirag.sweng 因为如果找到具有给定用户名或电子邮件的用户,则我无法添加具有相同值的新用户,因此返回 false 表示我无法添加注册用户。