как лечить любой вид ошибки глобально в node.js - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть маршрутизатор, который выглядит следующим образом.

router.post('/',async (req,res)=>{
        const actor = new Actor();
        actor.name = req.body.actor_name;
        actor.imdb_url = req.body.imdb_url;

        await actor.save()
        req.flash('success_message',"You've successfully added new Actor!");
        res.redirect('/admin/actors');

    })

Я не проверяю, сохранено это или нет. потому что я использую пакет express-async-errors, который автоматически оборачивает его в блок try catch, и в случае ошибки он выдает ошибку следующему промежуточному программному обеспечению. Вот эта ошибка промежуточного программного обеспечения.

app.use(function(err,req,res,next){

})

Теперь, если actor.save () возвращает ошибку проверки, я застреваю. как вы знаете, это приведет меня к глобальному промежуточному программному обеспечению, которое я только что показал вам. Затем, иногда, когда возникает ошибка проверки, мне приходится перенаправлять пользователей в / admin / movies / create, иногда / admin / users / create и e.t.c.

Решение 1) Я думаю, что нужно обернуть свой собственный блок try catch в маршрутизаторе и в catch, я буду знать, куда перенаправить. но этот путь плох, потому что я не хочу оборачивать свой собственный метод try, потому что я хочу, чтобы код выглядел красиво.

Решение 2) Если я использую решение 1, то неизбежно, что я буду писать операторы if в блоке catch.

catch(err){
       if(err.name == "ValidationError") res.redirect("admin/movies/create");
       else next(err);
   }

как то так.

Есть ли лучший способ?

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