【问题标题】:NodeJS Mongoose Passport local strategy query Mongodb gives error,NodeJS Mongoose Passport 本地策略查询 Mongodb 报错,
【发布时间】:2017-02-25 21:14:21
【问题描述】:

我有一个 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"});
      })
    }
  ));

打印“failed at here”,表示访问 mongodb 出错。但是,我在我的注册功能中编写了非常相似的功能,并且一切正常:

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 错误。有什么想法吗? 欢迎大家看看repo: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

【问题讨论】:

    标签: node.js mongoose passport-local passport.js


    【解决方案1】:
    .then(function(user){
      console.log("inside findone user>>>>>", err, user);
    

    由于未定义 err,因此引发错误。

    如果您记录 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-10
      • 2023-04-05
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      • 2019-03-19
      相关资源
      最近更新 更多