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

我正在使用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_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);