NodeJS Express Api - вызов res.send вне маршрута работает, но res.status не работает, несмотря ни на что

1

Чтобы сохранить чистоту на моей странице экспресс-маршрута, у меня есть локальная функция, вызываемая в каждом маршруте, и она передает запрос sql вместе с объектами req и res.

Это отлично подходит для отправки успешного результата и вызова работы res.send.

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу найти способ заставить res.status работать, и независимо от синтаксиса он просто отключается и не дает никакой ошибки в консоли или на передней панели.

Сложная вещь, когда она внутри конкретного маршрута работает, но сообщение об ошибке, похоже, не отправляется, а просто пустым телом?

'async function queryDatabase(queryParam, req, res) {
    try {
        const cp = new sql.ConnectionPool(config);
        await cp.connect();
        let result = await cp.request().query(queryParam);
        cp.close();
        res.send(result.recordset);
    } catch (err) {
        res.statusMessage = 'Database error: ${err}';
        res.status(520);
    }
}'
  • 1
    Здесь вы просто устанавливаете статус, а не отправляете, просто используйте как res.status (520) .send ()
  • 0
    @Devraj Ах, я вижу, я не знал, как это сработало в прошлом при ошибках. Это сработало.
Теги:
express
rest

2 ответа

1
Лучший ответ

res.status(520) устанавливает только значение статуса в объекте ответа. На самом деле он не отправляет ответ. Итак, чтобы отправить ответ, у вас есть несколько вариантов. В более поздних версиях Express вы можете использовать этот ярлык:

res.sendStatus(520);

Это установит статус и отправит ответ.

Но вы также можете сделать это в любой версии Express:

res.status(520).end();

Который также устанавливает статус, а затем отправляет ответ.

0

Вы должны завершить свой ответ, используйте res.status(520).end() вместо res.status(520)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню