NestJS, Sequelize how to connect between different databases

44 Views Asked by At

I'm trying to connect two different databases. i did it, but i can't reference between them. using

  • @nestjs/seuqlize: 10.0.0
  • sequelize: 6.5.2
  • sequelize-typescript: 2.1.6

here's my codes.

app.module.ts

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true,
    }),
    SequelizeModule.forRootAsync({
      imports: [ConfigModule],
      inject: [ConfigService],
      name: 'A',
      useFactory: (configService: ConfigService) => ({
        dialect: 'mysql',
        host: configService.get('RDS_HOST'),
        port: +configService.get('RDS_PORT'),
        username: configService.get('RDS_USER'),
        password: configService.get('RDS_PASSWORD'),
        database: 'A',
        name: 'A',
        synchronize: false,
        models: [User],
      }),
    }),
    SequelizeModule.forRootAsync({
      imports: [ConfigModule],
      inject: [ConfigService],
      name: 'B',
      useFactory: (configService: ConfigService) => ({
        dialect: 'mysql',
        host: configService.get('RDS_HOST'),
        port: +configService.get('RDS_PORT'),
        username: configService.get('RDS_USER'),
        password: configService.get('RDS_PASSWORD'),
        database: 'B',
        name: 'B',
        synchronize: false,
        models: [Order],
      }),
    }),
    HelloModule,
  ],
})
export class AppModule {}
user.model.ts

@Table({
  tableName: 'users',
})
export class User extends Model<User> {
  @Column({
    primaryKey: true,
  })
  id: number

  @Column
  username: string
}
order.model.ts

@Table({
  tableName: 'orders',
})
export class Order extends Model<Order> {
  @PrimaryKey
  @Column
  id: number

  @ForeignKey(() => User)
  @Column
  userId: number

  @BelongsTo(() => User)
  user: User
}

and i got this error when i ran yarn start:dev

[Nest] 17320  - 2024. 01. 28. 오전 11:08:58   ERROR [SequelizeModule] Unable to connect to the database. Retrying (1)...
Error: User has not been defined
    at Sequelize.model (/Users/sanghyunbyun/Desktop/nest-test/.yarn/__virtual__/sequelize-virtual-159d81f078/3/.yarn/berry/cache/sequelize-npm-6.35.2-96470a9165-10c0.zip/node_modules/sequelize/src/sequelize.js:483:13)
    at Sequelize.model (/Users/sanghyunbyun/Desktop/nest-test/.yarn/__virtual__/sequelize-typescript-virtual-7e2c232eff/3/.yarn/berry/cache/sequelize-typescript-npm-2.1.6-6cf9e2c703-10c0.zip/node_modules/sequelize-typescript/dist/sequelize/sequelize/sequelize.js:30:26)
    at /Users/sanghyunbyun/Desktop/nest-test/.yarn/__virtual__/sequelize-typescript-virtual-7e2c232eff/3/.yarn/berry/cache/sequelize-typescript-npm-2.1.6-6cf9e2c703-10c0.zip/node_modules/sequelize-typescript/dist/sequelize/sequelize/sequelize.js:52:46
    at Array.forEach (<anonymous>)
    at /Users/sanghyunbyun/Desktop/nest-test/.yarn/__virtual__/sequelize-typescript-virtual-7e2c232eff/3/.yarn/berry/cache/sequelize-typescript-npm-2.1.6-6cf9e2c703-10c0.zip/node_modules/sequelize-typescript/dist/sequelize/sequelize/sequelize.js:50:26
    at Array.forEach (<anonymous>)
    at Sequelize.associateModels (/Users/sanghyunbyun/Desktop/nest-test/.yarn/__virtual__/sequelize-typescript-virtual-7e2c232eff/3/.yarn/berry/cache/sequelize-typescript-npm-2.1.6-6cf9e2c703-10c0.zip/node_modules/sequelize-typescript/dist/sequelize/sequelize/sequelize.js:46:16)
    at Sequelize.addModels (/Users/sanghyunbyun/Desktop/nest-test/.yarn/__virtual__/sequelize-typescript-virtual-7e2c232eff/3/.yarn/berry/cache/sequelize-typescript-npm-2.1.6-6cf9e2c703-10c0.zip/node_modules/sequelize-typescript/dist/sequelize/sequelize/sequelize.js:38:14)
    at new Sequelize (/Users/sanghyunbyun/Desktop/nest-test/.yarn/__virtual__/sequelize-typescript-virtual-7e2c232eff/3/.yarn/berry/cache/sequelize-typescript-npm-2.1.6-6cf9e2c703-10c0.zip/node_modules/sequelize-typescript/dist/sequelize/sequelize/sequelize.js:20:22)
    at /Users/sanghyunbyun/Desktop/nest-test/.yarn/__virtual__/@nestjs-sequelize-virtual-3ff44abce4/3/.yarn/berry/cache/@nestjs-sequelize-npm-10.0.0-2f0e533bc6-10c0.zip/node_modules/@nestjs/sequelize/dist/sequelize-core.module.js:112:19

I checked order model, user model been init with console.log when running.

How to associate two different databases in Nestjs using Sequelize

I want to associate two different databases's tables in nestjs using sequelize

0

There are 0 best solutions below