Как передать параметр в функцию промежуточного программного обеспечения в Express JS? - PullRequest
0 голосов
/ 04 октября 2018
// state edit route
app.get("/map/:symbol/edit", isLoggedIn, function(req, res){
  State.findOne({symbol: req.params.symbol}, function(err, state){
    if(err){
      console.log(err);
    } else
    {
      res.render("edit", {state: state});
    }
  });
});

В приведенном выше фрагменте кода isLoggedIn - это функция промежуточного программного обеспечения для проверки подлинности.Его определение дано ниже:

// middleware function
function isLoggedIn(req, res, next){
  if(req.isAuthenticated()){
    return next();
  }
  res.redirect("/admin");
}

Итак, вопрос в том, как передать параметр, такой как строка, целое число или переменную пути, в функцию промежуточного программного обеспечения, чтобы его можно было использовать в URL-адресе маршрутизации.

1 Ответ

0 голосов
/ 04 октября 2018

Следуйте этому подходу, он может сделать работу за вас

app.use(function(req, res, next){
    console.log(req);
    this.req = req;
    // assign value like this
    this.req.body.custom_data = ['zz', 'aaa', ....];
    next();
});

app.get("/map/:symbol/edit", isLoggedIn, function(req, res){
   State.findOne({symbol: req.params.symbol}, function(err, state){
      if(err){
         console.log(err);
      } else {
         res.render("edit", {state: state});
      }
   });
});

function isLoggedIn(req, res, next){
   console.log(req.body);
   if(req.isAuthenticated()){
      return next();
   }
   res.redirect("/admin");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...