2016-07-15 3 views
0

saveTheUsr()을 호출하면 usr is not defined이라는 오류가 발생합니다. 나는 그것을 얻지 못하고 접근 할 수없는 이유는 무엇입니까? 나는 단순히 함수를 제외하고 콜백에서 함수 내용을 가질 수 있고 그것이 작동한다는 것을 안다. 필자는 usr 객체를 선언하고 콜백 함수를 통해 호출 할 수있는 방법을 알고 싶습니다. 정확히 콜백에서 시도한 방식. 그게 가능하니? 내 방법이 효과가없는 이유는 무엇입니까? 댓글에서 지적passport.js 로컬 전략 콜백에 함수를 만들고 실행할 수없는 이유는 무엇입니까?

var LocalStrategy = require('passport-local').Strategy; 
 
var User = require('../app/models/user'); 
 

 
function saveTheUsr(){ 
 
    var usr = new User(); 
 
    usr.local.email = email; 
 
    usr.local.password = password; 
 
    usr.save(function(err) { 
 
     if (err) 
 
     throw err; 
 
     return done(null, usr); 
 
    }); 
 
} 
 

 
passport.use('local-signup', new LocalStrategy({ 
 
     usernameField : 'username', 
 
     passwordField : 'password', 
 
     passReqToCallback : true 
 
    }, 
 
    function(req, email, password, done) { 
 

 
     User.findOne({ 'local.email' : email }, function(err, user) { 
 

 
      if (err) 
 
       return done(err); 
 

 
      if (user) { 
 
       return done(null, false); 
 
      } else { 
 
       saveTheUsr(); 
 
      } 
 

 
     }); 
 

 
    }));

+0

'''saveTheUsr()'''메소드가 범위를 벗어나면'''saveTheUsr()와 같은 메소드에''email''와''password''를 매개 변수로 보내야합니다. email, password)''' –

+0

'done'도 정의되지 않은 것처럼 보입니다. 스택 추적으로 질문을 업데이트 할 때주의해야합니까? saveTheUsr()에'done'을 건네주고'done'을 받아 들일 함수를 업데이트해야합니다. 먼저 시도해보고 그것이 효과가 있는지 여부를 알려주십시오. –

+0

오, 여보! Thx 너무 많이! –

답변

2

.

saveTheUsr() 함수에 done 변수가 정의되지 않은 문제가있었습니다. 그리고이를 위해 saveTheUsrdone이라는 추가 매개 변수를 허용하고이를 호출하는 곳의 콜백 함수를 전달합니다.

관련 문제