2012-06-04 3 views
3

모든 사용자를 인증하기 위해 MySQL 데이터베이스에 연결하는 코드가 있습니다.이 코드는 정상적으로 작동합니다. 내가 MySQL의에서 빈 배열을받을 때 문제가왜이 코드는 nodejs와 함께 실행되며 everyauth는 MySQL의 빈 배열로 충돌합니까?

var promise = this.Promise(); 

sql.getUserInfo(userInfo, function(user, err) { 
    if(err) return promise.fulfill([ err ]); 

    promise.fulfill(user); 
}); 

return promise; 

내가 가지고 ...

이 everyauth의 코드의 일부가 ... SQL은 수출 기능입니다 ... 그것은 nodejs 충돌이다 어떤 생각이 promise인지 모르지만 그게 문제라고 생각하지 마십시오. 충돌 nodejs 때 이 콘솔에 오류가 :

starting step - extractLoginPassword 
...finished step 
starting step - authenticate 
[]//--- it cames from mysql when there is no user and password 

timers.js:96 
      if (!process.listeners('uncaughtException').length) throw e; 

이것은 정보 DB를 호출하고 추출 보낸 된 함수 :

exports.getUserInfo = function(user, callback) { 
    var email = user.email; 
    var passwd = user.password; 
    var sql = "SELECT id_email, contrasena FROM usuarios.usuario WHERE id_email = ? AND contrasena = ? "; 
    var params = [email, passwd]; 

    client.query(sql, params, function(err, rows) { 

    if (err) return callback(null, err); 
    if (rows && rows.length > 0) { 
     var user = rows[0]; 

     callback(user,err); 
    } 
+1

everyauth s의 작동합니다 다소 예외적 인 경향이있다. auth의 일부가 시간 초과되면 앱이 상위 수준에서 예외를받습니다. 나는 [Passport] (http://passportjs.org/)로 이사했기 때문에 오히려 행복해졌습니다. – Ashe

+0

는 내가 여권을 시도하고이 오류를 가지고 : 나는 같은 PARAM – andrescabana86

+1

는 당신이'passport.serializeUser'와'passport.deserializeUser'를 사용하여 여권과 직렬화 함수를 등록 확인받을 때 세션 에 사용자를 직렬화하는 데 실패했습니다. 이 페이지 하단의 세부 정보 : http://passportjs.org/guide/configuration.html –

답변

0

그냥 쿼리가 실제로 뭔가를 반환하는 경우 확인하고 일부 오류를 이행 이 경우

sql.getUserInfo(userInfo, function(user, err) { 
       if(err) return promise.fulfill([ err ]); 
       if(!user) return promise.fulfill(['Authentication error']); 
       promise.fulfill(user); 
      }); 

잘^

+0

메신저 지금 여권 사용 중 ...하지만 괜찮아요. 당신이 대답 해 주셔서 감사합니다. – andrescabana86

관련 문제