我有2个模型用户和user_verifications。用户有用户名和电子邮件,user_verification也是如此。
在向用户插入数据之前,我首先在user_verification中插入数据。 所以,我想知道用户名或电子邮件是否已注册。
我就是这样做的。
User.count({email: email}, function(err, count) {
if (count > 0) return false;
else User.count({username: username}, function(err, count) {
if (count > 0) return false;
else UserVerification.count({email: email}, function(err, count) {
if (count > 0) return false;
else UserVerification.count({username: username}, function(err, count) {
if (count > 0) return false;
return true;
});
});
});
});
但这有点令人讨厌,因为我必须一遍又一遍地做同样的事情。有更好的方法吗?
感谢。
答案 0 :(得分:0)
可能有用的一件事是使用$或查询,这样您就不必对同一个集合进行两次单独的查询。
User.count({ $or : [ { email : email } , { username : username } ] },
function () {...} );
您可能还想使用异步库(例如async
),以便您可以并行进行这些调用,因为它们不相互依赖。
async.parallel({
user: function(cb) {
User.count({$or : [ {email:email}, {username:username}]}, cb);
},
verification: function(cb) {
UserVerification.count({$or : [{email:email}, {username:username}]}, cb);
}
},
function (err, results) {
return !(results.user > 0 || results.verification > 0)
};