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