Я создаю микросервис с Nest JS с модулем DatabaseModule, который подключается к двум базам данных. Я импортирую DatabaseModule в массив импорта AppModule.
Когда я импортирую DatabaseModule в AppModule, микросервис перестает создавать экземпляры. Когда я не включаю импорт DatabaseModule, Microservice создает и выдает «Microservice прослушивает!» в терминал.
А как насчет DatabaseModule, препятствующего созданию микросервиса методом createMicroservice()
? Любые предложения?
Вся помощь очень ценится!
main.ts
import { Transport, MicroserviceOptions } from '@nestjs/microservices';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.createMicroservice<MicroserviceOptions>(AppModule, {
transport: Transport.TCP,
}
);
await app.listen(async () => console.log('Microservice is listening!'));
}
bootstrap();
app.module.ts
import { Module } from '@nestjs/common';
import 'dotenv/config';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { DatabaseModule } from './database/database.module';
@Module({
imports: [
DatabaseModule
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {
}
database.module .ts
import { TypeOrmModule } from '@nestjs/typeorm';
import { MongooseModule } from '@nestjs/mongoose';
import { Token } from '../token/token.entity';
import { TokenService } from '../token/token.service';
import { TokenModule } from '../token/token.module';
import { NotificationModule } from '../notification/notification.module';
import { NotificationService } from '../notification/notification.service';
const dbUsername = process.env.DB_USER;
const dbPassword = process.env.DB_PASS;
const dbName = process.env.DB_NAME;
const dbHost = process.env.DB_HOST;
@Module({
imports: [
MongooseModule.forRootAsync({
imports: [NotificationModule],
useFactory: () => ({
uri: 'mongodb://localhost:27017/notifications-app'
}),
inject: [NotificationService]
}),
TypeOrmModule.forRootAsync({
imports: [TokenModule],
useFactory: () => ({
type: 'mysql',
host: dbHost,
port: 3306,
username: dbUsername,
password: dbPassword,
database: dbName,
entities: [Token],
synchronize: true,
insecureAuth: true,
logging: true,
}),
inject: [TokenService]
}),
TypeOrmModule.forFeature([Token]),
],
})
export class DatabaseModule { }