Node.js 这两个节目段有什么不同
当我尝试创建中间件“Passport”时,就会出现这个问题 此程序段运行良好:Node.js 这两个节目段有什么不同,node.js,express,passport.js,middleware,Node.js,Express,Passport.js,Middleware,当我尝试创建中间件“Passport”时,就会出现这个问题 此程序段运行良好: router.post('/login',function(req,res,next) { passport.authenticate('local', function(err,user,message){ res.send(message.message); }) (req, res, next); }); 但当我把它改成: router.post('/login', funct
router.post('/login',function(req,res,next) {
passport.authenticate('local', function(err,user,message){
res.send(message.message);
}) (req, res, next);
});
但当我把它改成:
router.post('/login', function (req, res, next) {
passport.authenticate('local',(err, user,message) => {
res.send(message.message);
});
}, function(req, res, next){
});
post请求没有结束。装载不会停止
这些代码片段之间有什么区别?我认为这两个程序是相同的。
passport.authenticate()
返回一个中间件函数。
在第一个片段中,你要做的是
router.post('/login',function(req,res,next) {
var middleware = passport.authenticate('local',(err, user,message) => {
res.send(message.message);
}); // middleware is now a function. You can call it!
middleware(req, res, next);
});
在第二个代码段中,从未使用返回的中间件函数。 因此,您的
(err、user、message)=>{}
永远不会执行
这就是为什么请求没有结束
尝试:
它有不同的支架。在第一种情况下,“(req,res,next);”位于从第一行开始的函数内部。 在第二种情况下,您在逗号后声明了新函数
router.post('/login', passport.authenticate('local', function(err,user,message) {
res.send(message.message);
}));