这两个程序段有什么区别
What the difference between these two programs segments
当我尝试创建中间件时 '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', function (req, res, next) {
passport.authenticate('local',(err, user,message) => {
res.send(message.message);
});
}, function(req, res, next){
});
post 请求没有结束。加载不停止。
这些代码片段有什么区别?我认为这两个程序是一样的。
passport.authenticate()
returns一个中间件函数。
所以在第一个片段中,你正在做的是,
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) => {}
永远不会被执行。
这就是请求没有结束的原因。
尝试:
router.post('/login', passport.authenticate('local', function(err,user,message) {
res.send(message.message);
}));
它有不同的牙套。在第一种情况下,“(req, res, next);”是在第一行开始的内部函数。
在第二种情况下,您在逗号后声明了新函数。
当我尝试创建中间件时 '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', function (req, res, next) {
passport.authenticate('local',(err, user,message) => {
res.send(message.message);
});
}, function(req, res, next){
});
post 请求没有结束。加载不停止。
这些代码片段有什么区别?我认为这两个程序是一样的。
passport.authenticate()
returns一个中间件函数。
所以在第一个片段中,你正在做的是,
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) => {}
永远不会被执行。
这就是请求没有结束的原因。
尝试:
router.post('/login', passport.authenticate('local', function(err,user,message) {
res.send(message.message);
}));
它有不同的牙套。在第一种情况下,“(req, res, next);”是在第一行开始的内部函数。 在第二种情况下,您在逗号后声明了新函数。