Следующая функция (вроде) отключит мою конечную точку в expressJs - PullRequest
0 голосов
/ 20 апреля 2020

У меня была странная проблема. Когда в моем промежуточном программном обеспечении выполнена функция res.status, я могу запросить конечную точку, но когда я комментирую весь корпус функции промежуточного программного обеспечения и записываю только next() внутри, тогда конечная точка будет недоступна (?) В моих примерах:

const getUserHandler = user => async (req, res, next) => {
  try {
    if (req.params.email) {
      const { email } = req.params;
      const userFromDb = await user.getUser(email);

      if (userFromDb) {
        res.status(200).json(userFromDb);
      } else {
        res.status(404).json({ message: 'User not found' })
      }
    } else {
      res.status(400).json({ message: 'Missing user object' })
    }
  } catch (error) {
    throw error;
  }
}

router.get(`api/get/:email`, wrap(getUserHandler(userModule)))

Это позволит мне запросить конечную точку и фактически предоставить ожидаемый результат.

Но когда я попробую следующее:

const getUserHandler = user => async (req, res, next) => {
  next();
}

router.get(`api/get/:email`, wrap(getUserHandler(userModule)))

Ответ конечная точка выглядит так, как если бы эта конечная точка никогда не была объявлена:

<!DOCTYPE html>

    
        
        Error
    
    
        Cannot GET /api/user/get/a@a.a

Я знаю, что здесь происходит что-то странное (или я, возможно, что-то упустил). См. Аналогичный пример на официальных документах https://expressjs.com/en/guide/writing-middleware.html

Я благодарен за помощь.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...