И вот вопрос. По факту в системе ничего не произошло, но лог будет врать, что события были.
Потому что события действительно были. А потом все откатилось. Тут разбирается этот вопрос:
Больше похоже что у вас что то не так с архитектурой.
Данная транзакция работает только с базой, вам нужно чтобы транзакция также откатывала и запросы или логи.
Есть еще паттерн UnitOfWork. Возможно он вам подойдет.
croupier:
Большинству интернет-магазинов не нужно. Но я думал, что вы не только про магазы спрашиваете. Кроме магазов еще куча всего. Я например тоже выполняю задачи для клиента, магазы не делаю, но все это тоже малый бизнес. И большинство из них легче, быстрее и более поддерживаемо в дальнейшем - сделать на фреймворке. Не обязательно Angular, есть к примеру новый Vue. Он очень легкий, подходит для небольших приложений и в нем куча готовых решений.
croupier: Если оно вам не нужно - не значит, что другим не нужно. Фронт фреймворки для больших приложений. Можно сравнить их с клиентскими приложениями на Desktop. Например Skype есть и в Desktop и в вебе.
Парсить разные сайты это довольно не легко. По той причине, что верстка у проектов меняется, красивое API не у всех есть, есть те, кто борятся с ботами и они забанят твои парсеры.
У меня были такие проблемы. Мое решение такое: начать можно с парсеров, но затем надо договариваться с теми кого ты парсишь и сделать возможнось добавляться самим.
Можно хранить в сокете ссылку на юзера, которому он принадлежит. И повесить коллбек на закрытие сокета - удалить из объекта данного юзера дескриптор.
Или к примеру хранить в WeakMap. А в открытом сокете держать ссылку на дескриптор этого сокета. Как только сокет закроется - объект удалится и дескриптор тоже автоматически удалится из WeakMap.
как правильно реализовать классы, как их связывать, как распределить обязанности между ними
А дальше уже идут разные архитектурные подходы. Их очень много и разных. Каждый под свою задачу. Есть к примеру такой популярный Предметно-ориентированный подход(DDD). Но там больше уже не про объекты как техническое средство, а про подход к проектированию.
Keksonov: По реакту не смогу подсказать, не работаю на нем. Погуглите или задайте отдельно вопрос.
Подумайте, нужно ли это вам. Обычно это сложнее, тк нужно писать кроссплатформенный код под сервер и под фронт.
Keksonov: Тут все зависит от технологий. Если к примеру есть роутинг только во фронте то сервер будет всегда отдавать 200 ок на все запросы если вы не ограничите их. Это плохо скажем для SEO. Но для этого есть SSR.
Keksonov: Да также можно Nginx поставить. Вообще node сама может быть веб-сервером и отдавать статику, например это реализованно в express expressjs.com/en/starter/static-files.html
Или вы в целом про инструменты для разработки спрашиваете? Так то их очень много.
Потому что события действительно были. А потом все откатилось.
Тут разбирается этот вопрос:
Больше похоже что у вас что то не так с архитектурой.
Данная транзакция работает только с базой, вам нужно чтобы транзакция также откатывала и запросы или логи.
Есть еще паттерн UnitOfWork. Возможно он вам подойдет.