Missing required argument: dataSource in TypeORM and NestJS

Viewed 22

I'm trying to generate migrations with multiple databases using typeORM 0.3.7 and NestJS but when I run the command:

npx typeorm migration:generate ./src/migrations

It throws me an error "Missing required argument: dataSource". I saw, I should create a file with all my datasources but I don't know how to use them in my database.module.

This is my code:

database.module.ts

@Module({
  imports: [
    TypeOrmModule.forRootAsync({
      name: databaseNames.admin,
      inject: [config.KEY],
      useFactory: (
        configService: ConfigType<typeof config>,
      ): TypeOrmModuleOptions => {
        const { admin, host, username, password, port } =
          configService.mysqlDatabases;
        return {
          type: `mysql`,
          name: admin.name,
          database: admin.name,
          host,
          username,
          password,
          port: port,
          entities: [User],
          migrations: [__dirname + '/../migrations/*{.ts,.js}'],
          extra: {
            charset: 'utf8mb4_unicode_ci',
          },
        };
      },
    }),
    TypeOrmModule.forRootAsync({
      name: databaseNames.casamoto,
      inject: [config.KEY],
      useFactory: (configService: ConfigType<typeof config>) => {
        const { casamoto, host, username, password, port } =
          configService.mysqlDatabases;
        return {
          type: `mysql`,
          database: casamoto.name,
          host,
          username,
          password,
          port: port,
          entities: [Client, Product, Stock, Order, OrderDetail, Invoice],
          synchronize: false,
        };
      },
    }),
  ],
})
export class DatabaseModule {}

config.ts

import { registerAs } from '@nestjs/config';

export enum databaseNames {
  admin = 'admin',
  casamoto = 'casamoto',
  maruyama = 'maruyama',
}

export default registerAs('config', () => {
  return {
    port: +process.env.PORT,
    mysqlDatabases: {
      host: process.env.MYSQL_HOST,
      port: +process.env.MYSQL_PORT,
      username: process.env.MYSQL_USERNAME,
      password: process.env.MYSQL_PASSWORD,

      admin: {
        name: process.env.ADMIN_DATABASE,
      },
      casamoto: {
        name: process.env.CASAMOTO_DATABASE,
      },
    },
  };
});
0 Answers
Related