Введение в свои провайдеры в Nest
Обычно фреймворк сам создаёт объект по классу из списка провайдеров и передаёт его контроллеру. Иногда нужен уже готовый объект, другой класс или значение, собранное снаружи модуля.
Такую настройку называют
своим провайдером: вместо
имени класса в списке пишут объект
с полем provide и способом,
чем именно подставить зависимость.
Контроллер по-прежнему получает
нужное через конструктор или
пометку @Inject, а модуль
решает, что лежит за токеном.
Один приём подставляет готовые данные без класса. Другой меняет класс на альтернативу с тем же контрактом. Фабрика собирает значение при старте, псевдоним связывает два токена с одним объектом. Отдельный токен типизирует строку, необязательная пометка допускает отсутствие провайдера, асинхронная фабрика готовит значение с задержкой.
Дальше каждый приём разберём отдельно на коротком примере. Везде один адрес списка записей, без базы и лишних модулей. На сайте с постами это снимает жёсткую привязку к одному классу.