На моем Node JS сервере у меня есть этот обработчик маршрута, который отправляет запрос стороннему API для получения имени пользователя:
app.get('/players/:player', apiLimiter, function(request, response) {
const player = request.params.player;
const api_url = `https://api.com/shards/steam/players?filter[playerNames]=${player}`;
var options = {
method: "GET",
observe: 'body',
};
let apiRequest = https.request(api_url, options, function (res) {
let data = "";
res.on("data", chunk => {
data += chunk;
})
res.on("end", () => {
let objectParsed = JSON.parse(JSON.stringify(data));
response.send(objectParsed);
})
if(!player) {
res.status(404).send("Not found.");
}
})
apiRequest.end();
})
Это прекрасно работает, чтобы получить существующего пользователя. Однако, если я добавлю поддельное имя пользователя на свою страницу / Players, эта страница все равно будет загружена со статусом 200 вместо получения ответа 404. Страница загружается и выглядит испорченной, потому что фактически не получает никаких данных из API.
Я чувствую, что это глупый вопрос. В своем исследовании я нашел, как обрабатывать ошибки, если это просто маршрут, а не если этот маршрут зависит от параметра пути, как в / Players /: player
Я нашел вопрос, который был похож на мой ( Как вызвать ошибку 404 в express. js? ), и я попытался использовать оператор If: if (!player){res.status(404).send("Not found."); }
, но без кости Я использую это если утверждение в неправильном месте?
Как мне заставить мой сервер Node JS ответить 404, если пользователь из базы данных не существует?