У меня была странная проблема. Когда в моем промежуточном программном обеспечении выполнена функция 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
Я благодарен за помощь.
Спасибо.