Поставщики репозиториев Typeorm получают повторное предоставление без экспорта - PullRequest
0 голосов
/ 12 марта 2019

Согласно документации:

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

Затем я создал модуль, который инкапсулирует репозитории typeorms, и создал поставщиков для услуг (бизнес-логика).Но по какой-то причине, если я импортирую DatabaseModule в другой модуль и в его конструктор @InjectRepository, параметр не будет нулевым, как ожидалось.TypeOrmModule никогда не экспортировался, и репозитории не должны быть доступны.

Я что-то здесь неправильно понимаю?

Бонусный вопрос: Есть ли более простые способы отделить сервисы от другого пакета, чем приведенный ниже код?

const providers: Provider<any>[] = [
    {
        provide: OrganizationService,
        useFactory: (repository: Repository<Organization>) => {
            return new OrganizationService(repository);
        },
        inject: [getRepositoryToken(Organization)],
    }, {
        provide: FileService,
        useFactory: (repository: Repository<File>) => {
            return new FileService(repository);
        },
        inject: [getRepositoryToken(File)]
    }
];

@Module({
    imports: [TypeOrmModule.forFeature([Organization, File])],
    providers: [...providers],
    exports: [...providers]
})
export class DatabaseModule { }
...