В моем приложении nodejs я использую некоторые подфункции в маршруте / Restapi.
Одна из этих подфункций выглядит следующим образом:
console.log("Before Oauth");
await checkTheUser(clipApiID + ':' + clipApiSecret).then(res2 => {
console.log( "Success: " + res2 );
}).catch(error => {
console.log('Oauth Fehler');
//stop the route
res.statusCode = 409; //Wrong validation
res.json({
success: 'Wrong validation',
fails: 0
});
//End stop the route
});
console.log("After Oauth");
Я ожидал, что маршрут закончится после того, как произошла ошибка, и будет отправлен res. Но, наконец, маршрут продолжается до конца.
Я также пытался с помощью "return false"
после отправки res, но маршрут проходит дальше.
//stop the route
res.statusCode = 409; //Wrong validation
res.json({
success: 'Wrong validation',
fails: 0
});
return false;
//End stop the route
Я добавил сообщения «До OAuth» и «После OAuth», чтобы проверить, есть ли асинхронная проблема. Но журнал показывает:
- До OAuth
- OAuth Fehler
- После OAuth
Наконец я попытался с помощью next и добавил
app.use(function(err, req, res, next) {
console.error(err.message); // Log error message in our server's console
if (!err.statusCode) err.statusCode = 500;
res.status(err.statusCode).json({
success: err.message,
fails: 0
});
});
и использование
//stop the route
let err = new Error(`Oauth Error`); /
err.statusCode = 401;
return next(err);
//End stop the route
Я запутался, что никто из этого решения не остановит маршрут для дальнейшего выполнения. Есть идеи, что я делаю не так?