gpt4 book ai didi

node.js - 这两个程序段有什么区别

转载 作者:太空宇宙 更新时间:2023-11-03 23:19:47 26 4
gpt4 key购买 nike

当我尝试创建中间件“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() 返回一个中间件函数。所以在第一个片段中,您正在做的是,

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);
}));

关于node.js - 这两个程序段有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51208138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com