2011-08-24 14 views
2

내 웹 사이트에서 사용자 이전에 절대 권한을 부여하지 않고 로그인 할 때 모든 인증을 사용하면 다음 코드가 실행됩니다. 사용자가 이미 내 mongodb에 있는지 여부를 확인합니다. 이제 문제는 첫 번째 인증 된 사용자에 대한 작업입니다. 두 번째 사용자가 로그인하면 joinedUser._id 매개 변수가 올바르게 시작되지만 내 스키마의 다른 모든 매개 변수는 처음 저장된 사용자의 것이며 내 매개 변수와 같습니다. 다시 초기화하지 마십시오 ... 이상하게도, 내 console.log는 데이터베이스에 실제로 쓰여지는 것이 아니라 올바른 새로운 매개 변수를 보여줍니다. 내 인증은 everyauth 모듈을 통해 이루어지며, 나는 익스프레스 프레임 워크를 사용한다.몽구스 + Everyauth 이상한 행동

exports.findOrCreateFacebookUser = function(fbUserData, promise){ 

    User.findOne({_id:fbUserData.id}, function(err, user) { 
    if(err) { 
     console.log("Error in finding user for auth. Check Db"); 
     promise.fail(err); 
     return; 
    } 
    else if(user){ 
     console.log("User found "); 
     promise.fulfill(user);  
    } 
    else{ 

     var joiningUser = new User(); 
     joiningUser._id = fbUserData.id; 
     joiningUser.firstName = fbUserData.first_name; 
     joiningUser.lastName = fbUserData.last_name; 
     joiningUser.email = fbUserData.email; 
     //console.log(JSON.stringify(joiningUser)); 
     joiningUser.save(function(err){ 
     if(err){ 
      console.log("Couldnt save new user: " + err); 
      promise.fail(err); 
      return; 
     } 
     else{ 
      console.log("User wasnt existant, it is now created: " + JSON.stringify(joiningUser)); 
      promise.fulfill(joiningUser); 
     } 
     }); 
    } 
    }); 
}; 

답변

1

_id에 강제 값을 할당 할 때 문제가있는 것으로 보입니다. 그래서 프로필 고유 ID (예 : facebookId)에 대해 다른 ID를 만들었습니다.

3

mongoose-auth을 사용하십시오. 너에게 몽구스와 모든 아우트의 조합을 돌봐 준다.

+0

사용을 계획하고 있지만 여전히 내 코드가 작동하지 않는 이유를 알고 싶습니다. 거의 버그처럼 들립니다. 올바른 ID를 저장하지만 다른 모든 매개 변수는 (first_name ... 등) 이전에 입력 한 객체의 값을 저장합니다 ... 왜? 나는 무엇을 보지 못하니? – guiomie