2016-10-17 49 views
0

本人護照本地策略嘗試查詢用戶在MongoDB中:的NodeJS貓鼬護照本地策略查詢的MongoDB提供了錯誤,

passport.use(new LocalStrategy(
    function(username, password, done){ 
     console.log("username and password is >>>>>", username, password); 
     var findOne = Q.nbind(User.findOne, User); 
     findOne({"username": username}) 
     .then(function(user){ 
     console.log("inside findone user>>>>>", err, user); 

     if (!user) { 
      return done(null, false, {messge: 'This user is not registered.'}); 
     } 

     if (!user.comparePasswords(password)){ 
      return done(null, false, {message: 'This password is not correct'}); 
     } 

     return done(null, user); 
     }) 
     .fail(function(err){ 
     console.log("failed at here"); 
     return done(null, false, {message: "Server have difficulty"}); 
     }) 
    } 
)); 

「在這裏失敗」被打印出來,這意味着有錯誤訪問MongoDB的。不過,我寫的非常類似的功能在我的註冊功能,而每一件事情正常工作:

​​

我創建通過註冊的用戶。所以當我嘗試註冊同一用戶時,它會給我409。但是,當我嘗試使用該用戶登錄時,護照本地策略報告訪問mongodb時出錯。有什麼想法嗎? 歡迎您來看一看回購:https://github.com/7seven7lst/chatterApp 護照的配置可以發現:https://github.com/7seven7lst/chatterApp/blob/master/lib/routes.js ,並在申請中可以找到: https://github.com/7seven7lst/chatterApp/blob/master/lib/controllers/user.js

回答

1
.then(function(user){ 
    console.log("inside findone user>>>>>", err, user); 

錯誤被拋出,因爲err ISN沒有定義。

如果你登錄的實際錯誤的fail功能:

.fail(function(err){ 
    console.log("failed at here", err); 
    return done(null, false, {message: "Server have difficulty"}); 
}) 

您將看到:

ReferenceError: err is not defined 
    at /Users/dting/chatterApp/lib/routes.js:16:49