2012-07-20 6 views
0

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

$ 또는 쿼리를 사용하면 동일한 컬렉션에 두 개의 별도 쿼리를 만들 필요가 없습니다.

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) 
}; 
+0

감사합니다. 그것은 내 코드를 더 읽기 쉽게 만든다. – praxmatig

관련 문제