关于.Then和.catch的问题

2022-03-10 00:00:00 javascript passport.js

是否可以触发.Then和.catch?

这里是我的脚本:

passport.use(new BasicStrategy( (username, password, callback) => {
    User.findOne({where: { username: username }})
      .then(function (data) {
        if(data === null) { 
          console.log("then.false"); 
          callback(null, false);};
          var verify = data.verifyPassword(password);
          if(verify === true) { 
            console.log("then.data "+ data); 
            callback(null, data); 
          } 
          callback(null, false);
        })
      .catch( err => {
        console.log('catch  '+ err);
        callback(null, false);
      })
  })
);

这里是我的控制台,我们可以看到,CATCH和CATCH被触发。怎么可能?

then.data [object SequelizeInstance:user]
catch  Error: passport.initialize() middleware not in use

解决方案

感谢您的帮助。我按如下方式更改了代码:

passport.use(new BasicStrategy( (username, password, callback) => {
User.findOne({where: { username: username }})
  .then(function (data) {
    var verify = data.verifyPassword(password);
    if(verify == true) { console.log("VERIFY = " + verify); callback(null, data); } 
       }
  )
  .catch( err => {
    console.log('catch  '+ err);
    callback(null, false);
    }
  )
  }
  ));

我的控制台结果是:

VERIFY=TRUE 捕获错误:passport.initialize()中间件未在使用

我们已完成.Then并再次捕获,尽管来自Verify的";true";和if";if也返回了";true。

相关文章