Я пишу экспресс-приложение JS, используя этот стиль для маршрутизации:
router.post('/account/create', async function(req, res, next) {
var account = await db.query(`query to see if account exists`).catch(next);
if (account) {
res.send('Email is unavailable.');
} else {
// Create account
}
});
Если запрос возвращается успешно, но без строк, маршрут выполняется идеально. account
пусто, поэтому оператор if работает, и мы создаем учетную запись.
Однако, если возникла проблема с запросом db, вызывается оператор catch, а account
равен undefined
, поэтому функция продолжает пытаться создать новую учетную запись, даже если была вызвана next
, какие журналы выдает ошибку и 500.
Чтобы продолжить с простотой этого простого асинхронного / ожидающего простого стиля кодирования, существует ли способ легко остановить выполнение функции (или другое решение), чтобы предотвратить выполнение последующего кода без возврата к обратным вызовам?