NodeJS Express Api - вызов res.send вне маршрута работает, но res.status не работает, несмотря ни на что - PullRequest
0 голосов
/ 21 октября 2018

Для поддержания чистоты на моей странице экспресс-маршрута у меня есть локальная функция, которая вызывается на каждом маршруте и передает запрос 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);
    }
}`

Ответы [ 2 ]

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

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

res.sendStatus(520);

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

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

res.status(520).end();

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

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

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

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