#javascript #passport.js
Вопрос:
Возможно ли это вызвать .тогда И … поймаешь ?
вот мой сценарий :
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);
})
})
);
и вот моя консоль, как мы можем видеть, тогда и сработает. Как это возможно ?
then.data [object SequelizeInstance:user]
catch Error: passport.initialize() middleware not in use
Комментарии:
1. Если
findOne()
это удастся, вы перейдете к.then()
обратному вызову. Если.then()
обратный вызов приведет к отклонению, вы перейдете к следующему.catch()
Ответ №1:
Если findOne
или что-то внутри then
бросков/отклонений, они вызовут цепочку catch
. Скорее всего, один из двух ваших callback()
вызовов выдает ошибку.
Ответ №2:
спасибо за вашу помощь. Я изменил код следующим образом :
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);
}
)
}
));
Мой консольный результат таков :
ПРОВЕРКА = истинная ошибка перехвата: passport.initialize() промежуточное программное обеспечение не используется
Мы закончили .затем И поймайте снова, несмотря на «истину» от проверки и «если», возвращающее » истину тоже.