Чтобы сохранить чистоту на моей странице экспресс-маршрута, у меня есть локальная функция, вызываемая в каждом маршруте, и она передает запрос 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);
}
}'
res.status(520)
устанавливает только значение статуса в объекте ответа. На самом деле он не отправляет ответ. Итак, чтобы отправить ответ, у вас есть несколько вариантов. В более поздних версиях Express вы можете использовать этот ярлык:
res.sendStatus(520);
Это установит статус и отправит ответ.
Но вы также можете сделать это в любой версии Express:
res.status(520).end();
Который также устанавливает статус, а затем отправляет ответ.
Вы должны завершить свой ответ, используйте res.status(520).end()
вместо res.status(520)