Где обратный вызов определен в этом коде

Это фрагмент кода для аутентификации с использованием паспортов js, который выглядит следующим образом:

// Middleware
passport.use('local-login', new LocalStrategy({
    usernameField: 'email',
    passwordField: 'password',
    passReqToCallback: true
}, function(req, email, password, done){
    User.findOne({ email: email }, function(err, user) {
        if (err) return done(err)
        if (!user) {
            return done(null, false, req.flash('loginMessage', 'No user has been found'))
        }
        if (!user.comparePassword(password)) {
            return done(null, false, req.flash('loginMessage', 'Incorrect Username/Password'))
        }
        return done(null, user)
    })
}))

В приведенном выше коде done - это функция обратного вызова, используемая в нескольких местах, но я хочу знать, где определена эта (выполненная) функция обратного вызова, я вижу, что она передается в качестве аргумента, а затем вызывается, поэтому мой основной вопрос как я могу узнать, что будет делать этот обратный вызов или где он определен. Предполагается совершить какое-то действие. Так где это определяется?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
42
4

Ответы 4

how can I know what this callback will do

В паспортной документации должно быть указано все, что вам нужно знать нужно, чтобы использовать его должным образом.

or where is it is defined

Где-то в исходном коде к passport.

Вам не нужно беспокоиться о том, где вызывается обратный вызов "done".

Это внутренний обратный вызов, который используется "паспортом".

Это ваш код, способ сообщить «паспорту» результат «действия входа».

Пользователь верифицирован?

  • если это так, вызовите обратный вызов с ошибкой = null и пользовательскими данными
  • если нет, вызовите обратный вызов с ошибкой

Паспорт - это структура, основанная на подключении. Когда вы определяете промежуточное ПО, подобное этому, следующей функцией в конвейере является done.

Например, в экспресс-маршруте мы можем использовать подобное промежуточное ПО.

app.use('/route', middleWare1, middleWare2,..., route)

теперь промежуточное программное обеспечение как бы определено так

const middleWare1 = (req, res, next)=> {
    //do some work
    next()
}

Если вызывается next, он перейдет к следующему промежуточному программному обеспечению. done такой. Он передаст req следующему промежуточному программному обеспечению в конвейере.

И у узла есть соглашение о передаче error в качестве первого и data в качестве второго аргумента в обратном вызове.

В соответствии с http://www.passportjs.org/docs/basic-digest/ вы вызываете функцию «готово», чтобы предоставить пользователю паспорт. Если вы хотите знать, где определяется функция, вы можете прочитать исходный код метода «использовать».

Другие вопросы по теме