2016-10-17 4 views
0

У меня есть паспорт локальная стратегия попытаться запросить пользователя в MongoDB:NodeJS Mongoose Passport локальная стратегия запроса 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. Тем не менее, я пишу очень сходную функцию в моей функции SIGNUP, и каждая вещь работает отлично:

exports.signup = function(req, res, next){ 
    console.log("hit the signup function"); 
    var findOne = Q.nbind(User.findOne, User); 
    findOne({username: req.body.username}) 
    .then(function(user){ 
    console.log("user from query is >>>>>", user); 
    if (!user){ 
     // user doesn't exist, create a new one\ 
     var create = Q.nbind(User.create, User); 
     var newUser = {username: req.body.username, password: req.body.password}; 
     return create(newUser); 
    } else { 
     // user already exist, redirect to sign in page 
     res.send(409, 'already exist'); 
     //res.redirect('/signin'); 
    } 
    }) 
    .then(function(user){ 
    res.json(200,user); 
    }) 
    .fail(function(err){ 
    //next(err); 
    console.log("error is >>>>", err); 
    res.redirect('/signin'); 
    }) 
}; 

Я создал пользователя с помощью регистрации. поэтому он даст мне 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 
Смежные вопросы