их отделяешь друг от друга.
сейчас у тебя если бд выкинет ошибку, то она попадет в контроллер как есть — то есть контроллер узнает, что ты используешь в качестве бд монго или что там у тебя. узнает какие-то детали реализации. это и есть протекание абстракции. (детали реализации из слоя модели протекли в слой контроллера)
в чем здесь проблема? допустим, ты не хочешь отдавать пользователю ошибку напрямую из бд, поэтому ты в контроллере смотришь что это за ошибка, какой у нее текст и на основе этой информации формируешь уже ответ пользователю. т.е. твой контроллер теперь знает о деталях реализации твоей модели и зависит от них. если ты начнешь вместо монго использовать другую бд или формат ошибок у нее поменяется, то придется и контроллер переделывать.
чтобы этого не происходило, модель должна перехватывать ошибки и возвращать контроллеру свои собственные. тогда контроллер не будет ничего знать о деталях реализации модели.
* * *
но в простых случаях это не так уж и страшно. ты много времени потратишь на изоляцию слоев, а преимуществ особо и не получишь
То есть использовать throw error?
Обсуждают сегодня