感谢您的帮助。我把代码改成这样:
是否可以触发.then AND.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被触发。这怎么可能?
then.data [object SequelizeInstance:user]
catch Error: passport.initialize() middleware not in use
如果findOne
或then
内部的任何东西抛出/拒绝,它们将调用链接的catch
。最有可能的是,您的两个callback()
调用中有一个调用抛出了错误。
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=真catch错误:passport.initialize((中间件未使用
我们完成了。然后,尽管有一个";真";来自verify;如果";返回";也是如此。