Node.js отвечает с Express - PullRequest
       20

Node.js отвечает с Express

0 голосов
/ 08 ноября 2011

Итак, я делаю веб-страницу с Node.js и платформой Express.У меня уже есть регистрация и логин (я держу идентификатор пользователя в сеансе).Следующим шагом будет рендеринг другой страницы всякий раз, когда пользователь проходит аутентификацию.

Для некоторых из этих страниц требуется объект User, который является просто отображением пользователя из моей базы данных.Поэтому, когда приходит аутентифицированный запрос, мне нужно получить пользователя из моей базы данных.Но написание этого кода каждый раз кажется плохим способом сделать это.Итак, вот вопрос: возможно ли (и если да, то как?) Сделать, скажем, ответ, чтобы я мог автоматически извлекать User объект всякий раз, когда я знаю, что пользователь аутентифицирован и ТОГДА выполняет основной ответ?

Ответы [ 2 ]

2 голосов
/ 08 ноября 2011

Middleware - это то, на что вы ссылаетесь.Промежуточное ПО - это просто функция, которая вызывается последовательно при запуске маршрута.Итак, чтобы иметь функцию loadUser:

function loadUser(req, res, next) {
  // You would fetch your user from the db
  var user = users[req.params.id];
  if (user) {
    req.user = user;
    next();
  } else {
    next(new Error('Failed to load user ' + req.params.id));
  }
}

app.get('/user/:id', loadUser, function(req, res){
  res.send('Viewing user ' + req.user.name);
});

Вы можете определить столько функций промежуточного программного обеспечения, сколько вам нужно.Просто обязательно вызовите next () в конце, чтобы передать обработку маршрута следующей функции.

1 голос
/ 08 ноября 2011

Этот пример EXACT описан в документе промежуточного программного обеспечения маршрута express.js . Прочтите его, и вы увидите шаблон использования промежуточного программного обеспечения для выделения общих функциональных возможностей, которые вам нужны во многих путях маршрута в вашем приложении.

...