gpt4 book ai didi

javascript - 指针函数是否从 .get() 闭包接收参数?

转载 作者:行者123 更新时间:2023-12-03 07:13:15 24 4
gpt4 key购买 nike

有没有办法使用facebookResponse作为指针函数,而不是使用匿名函数,并让它访问req,res,next?我考虑过使用 bind 但我不知道如何绑定(bind)路由的 .get() 方法。我没有成功使用 passport.authenticate('facebook',facebookResponse.call(this, req, res, next)

auth.route('/auth/facebook/callback')
.get(function(req, res, next) {
passport.authenticate('facebook', facebookResponse);
});

function facebookResponse(err, userDoc, info) {
if (err) { return next(err); }
// I don't think !userDoc will ever happen because of mongo upsert
if (!userDoc) { return res.redirect('/login'); }
req.logIn(userDoc, function(err) {
if (err) { return next(err); }
return res.redirect('http://localhost:9000/users');
});
}

最佳答案

一种方法是使用函数返回函数:

auth.route('/auth/facebook/callback')
.get(function(req, res, next) {
passport.authenticate('facebook', facebookResponse(req, res, next));
});

function facebookResponse(req, res, next) {
return function(err, userDoc, info) {
if (err) { return next(err); }
// I don't think !userDoc will ever happen because of mongo upsert
if (!userDoc) { return res.redirect('/login'); }
req.logIn(userDoc, function(err) {
if (err) { return next(err); }
return res.redirect('http://localhost:9000/users');
});
}
}

在这里,您的内部函数可以访问闭包中的外部函数参数(reqresnext)。

关于javascript - 指针函数是否从 .get() 闭包接收参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36536141/

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