Модуль аутентификации с отложенным пользовательским модулем - PullRequest
0 голосов
/ 01 февраля 2019

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

Что я хочу сделать, это определить интерфейс, который UserService должен придерживаться вместо фактической реализации.Это оставит детали реализации пользователям библиотеки.

Я пробовал несколько разных подходов, таких как наличие строкового токена APP_USER_SERVICE, первоначально null, а затем его переопределение разработчиком, но это казалосьчтобы столкнуться с трудностями, вводя значение null и не вводя фактическое значение.

Еще один подход, который я пробовал, который мне нравится, - это AuthModule.withUserModule(UserModule), где AuthModule импортирует динамический UserModule и ищеттокен APP_USER_SERVICE, определенный реализацией UserModule.Проблема с этим подходом в том, что кажется, что он попадает в ад круговой зависимости.

Я новичок в проекте NestJS, поэтому, возможно, я упускаю что-то очевидное.Спасибо за любые указания о том, как организовать этот рабочий процесс, спасибо.

Вкратце, это структура, к которой я иду:

-> = зависит от

БИБЛИОТЕКА:

AuthModule -> IUserModule

ПОЛЬЗОВАТЕЛЬ:

AuthModule.withUserModule(UserModule) для заполнения IUserModule требования.

UserModule -> AuthModule

Вот код (сломанный атм):

Библиотека
Пример реализации

1 Ответ

0 голосов
/ 12 февраля 2019

Работа с forwardRef() должна быть только последним средством.В качестве альтернативы, рассмотрите возможность разделения одного из модулей на две или более частей, чтобы разбить циклические зависимости, например:

AuthModule на *1005*

  • AuthLoginModule импортируется с помощью UserModule
  • ValidateAuthModule импортирует пользовательский модуль

или соответственно UserModule на две части.

...