Javascript 其中回调是在这段代码中定义的

Javascript 其中回调是在这段代码中定义的,javascript,node.js,callback,passport.js,asynchronous-javascript,Javascript,Node.js,Callback,Passport.js,Asynchronous Javascript,这是使用passports js进行身份验证的代码片段,如下所示: // Middleware passport.use('local-login', new LocalStrategy({ usernameField: 'email', passwordField: 'password', passReqToCallback: true }, function(req, email, password, done){ User.findOne({ email:

这是使用passports 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是一个在多个位置使用的回调函数,但我想知道这个(done)回调函数是在哪里定义的,我看到的是它作为参数传递,然后被调用,所以我的基本问题是如何知道这个回调函数将做什么,或者它是在哪里定义的。它应该执行一些操作。那么它的定义是什么呢

我怎么知道这个回调会做什么

护照文件应该告诉你正确使用护照所需要知道的一切

或者它的定义在哪里


在源代码中的某个地方,输入到
passport

您不必担心“done”回调调用的位置

它是“passport”使用的内部回调

这是告诉“passport”登录操作结果的代码方式

用户是否经过验证

  • 如果是这样,则使用error=null和用户数据调用回调
  • 如果不是,则调用包含错误的回调

    • Passport是一个基于连接的框架。 当您定义这样的中间件时,
      done
      是管道中的下一个功能

      例如,在快速路线中,我们可以使用这样的中间件

      app.use('/route', middleWare1, middleWare2,..., route)
      
      现在,中间件的定义是这样的

      const middleWare1 = (req, res, next)=> {
          //do some work
          next()
      }
      
      如果调用next,它将转到下一个中间件<代码>完成就是这样。它将把
      req
      传递给管道中的下一个中间件

      节点有一个约定,将
      错误
      作为第一个参数传递,将
      数据
      作为第二个参数传递到回调中。

      根据您调用的“完成”函数,为用户提供passport。 若你们想知道函数是在哪里定义的,你们可以阅读“use”方法的源代码