Javascript 如何向函数中添加更多参数?
我正在使用NodeJS、express和passport。然而,我认为这个问题只是关于javascript。 在我的路由文件中,我有Javascript 如何向函数中添加更多参数?,javascript,node.js,express,connect,passport.js,Javascript,Node.js,Express,Connect,Passport.js,我正在使用NodeJS、express和passport。然而,我认为这个问题只是关于javascript。 在我的路由文件中,我有 app.get( '/users', login_req, user.index); 因此,当服务器在/users接收到get请求时,它将通过login_req函数传递req,res,next,如果用户获得授权,login_req将调用user.index函数。我想知道是否以及如何向login_req添加更多参数?我的目标是能够传入其他参数,如login_re
app.get( '/users', login_req, user.index);
因此,当服务器在/users接收到get请求时,它将通过login_req函数传递req,res,next
,如果用户获得授权,login_req将调用user.index函数。我想知道是否以及如何向login_req添加更多参数?我的目标是能够传入其他参数,如login_req(['admin']、['user1'、['user2'])
以选择哪些用户有权访问user.index
这是我的登录请求代码:
exports.login_req = function(req, res, next) {
if (req.isAuthenticated()) { return next(); }
res.redirect('/login')
}
我想,一般来说,我想知道如何在回调中附加更多参数。将匿名函数传递给
get
,然后从其中调用login\u req
:
app.get('/users', function (req, res, next) {
login_req(req, res, next, something, somethingElse);
}, user.index);
上面的答案应该有用,但是我正在寻找一个更有条理的解决方案。根据我从上述答案中学到的知识,我得出了以下结论 我从中学习了如何在回调中添加更多参数。这是我的密码:
exports.login_req = function(groups, users) {
return function(req, res, next) {
console.log(groups, users)
if (req.isAuthenticated()) { return next(); }
res.redirect('/login')
};
}
及
login_req的回调传递groups=“group1”和users=undefined。login_req返回匿名函数,其中包含参数req、res、next
和组、用户
,可通过闭包获得。我已经打印出了组和用户,以证明概念,这似乎是可行的
我更喜欢这种方法,因为现在我可以像这样组织我的routes.js文件:
app.get( '/users', login_req("admins"), user.index);
app.get( '/users/new', user.new);
app.post( '/users', user.create);
app.get( '/users/:id', user.show);
app.get( '/users/:id/edit', login_req("admins", "user1"), user.edit);
app.put( '/users/:id', login_req("admins", "user1"), user.update);
app.del( '/users/:id', login_req("admins", "user1"), user.destroy);
你的语法有点错误<代码>登录请求({'admin'},{'user1','user2'})将更接近您需要的。听起来您需要回调。@Leetylor已修复,谢谢!实际上,什么?为什么语法会是这样?{}用于对象,如
person={firstname:“John”,lastname:“Doe”,年龄:50岁,eyecolor:“blue”}代码>,那么这有什么意义呢?我将原来的问题改为使用数组。我希望更干净一些,因为我有20多行app.get、app.post等。我曾经找到一个解决方案,我将在下面发布。
app.get( '/users', login_req("admins"), user.index);
app.get( '/users/new', user.new);
app.post( '/users', user.create);
app.get( '/users/:id', user.show);
app.get( '/users/:id/edit', login_req("admins", "user1"), user.edit);
app.put( '/users/:id', login_req("admins", "user1"), user.update);
app.del( '/users/:id', login_req("admins", "user1"), user.destroy);