170 похожих чатов

Друзья, подскажите, как лучше всего сделать доступ к одному соединению

базы во вложенных роутах Express?

22 ответов

14 просмотров

Не нужно так делать, инкапсулируй логику работы с БД

Maksim-Mukharev Автор вопроса

Где инкапсулировать? Может пример есть какой-то? Примеров много, но они как-то не очень помогают.

Импортируй нужную структуру(модель) напрямую в роуте

Maksim-Mukharev Автор вопроса

Но тогда это будут разные соединения же. А какой смысл дергать это соединение на каждый чих?

почему разные?

Maksim-Mukharev Автор вопроса

Роуты вынесены в отдельные файлы. И импортируются. В роутах будет вызываться нужный контроллер. Так вот? получается, что в импортируемые роутеры мне нужно как-то передать соединение

там будет один и тот же объект импортирвоаться

Maksim-Mukharev Автор вопроса

Может я в этом не разобрался еще совсем. Но вы хотите сказать, что объект, который импортируется в разных файлах - один и тот же и создается в единственном экземпляре?

require всё кеширует, да. естественный синглтон

Как напишешь так и будет

Maksim-Mukharev Автор вопроса

Вот это поворот... Это прямо шок-контент для меня

Maksim-Mukharev Автор вопроса

Я в шоке, реально это так работает. Протестировал на роутах в разных файлах и require реально использует один объект базы. Это выворачивает наизнанку мое понимание node js и построения архитектуры. Я все извращался через dependency injection, а тут оказывается все работает иначе. Где об этом можно узнать подробнее? Почему-то я не видел на курсах этого, или пропустил что-то

а как ты теперь мокать будешь базу для тестов?

Maksim-Mukharev Автор вопроса

А я пока не использую тесты, но вопрос интересный. Мне в этом только предстоит разобраться

Maksim-Mukharev Автор вопроса

Есть какой-то курс, где можно нормально это все изучить?

ну, в общем, тот же jest умеет мокать модули. но лично мне наоборот удобнее с DI

стыдно сказать, но я не смотрел ни одного курса...

вот рили? прям ни одного?

по ноде

онли дока?

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

Maksim-Mukharev Автор вопроса

Я пытался. По идее это более очевидно, но абсолютно не понятно как местами принцип единственной ответственности применить. Как в том же Express распространить необходимые связи? Пока не понятно

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта