어제에 이어 오늘은 Multi DB인 경우에 대해서 알아봅니다.
database.provider.ts
import { Sequelize } from 'sequelize-typescript';
import { Cat } from '../cats/cat.entity';
export const databaseProviders = [
{
provide: 'SEQUELIZE',
useFactory: async () => {
const sequelize = new Sequelize({
dialect: 'mysql',
host: 'localhost',
port: 3306,
username: 'root',
password: 'password',
database: 'nest',
});
sequelize.addModels([Cat]);
await sequelize.sync();
return sequelize;
},
},
];
database.module.ts
import { Module } from '@nestjs/common';
import { databaseProviders } from './database.providers';
@Module({
providers: [...databaseProviders],
exports: [...databaseProviders],
})
export class DatabaseModule {}
cats.providers.ts
- cat entity를 하나 구성했다고 치고 cats providers를 만들어 봅니다.
import { Cat } from './cat.entity';
export const catsProviders = [
{
provide: 'CATS_REPOSITORY',
useValue: Cat,
},
];
cats.service.ts
import { Injectable, Inject } from '@nestjs/common';
import { CreateCatDto } from './dto/create-cat.dto';
import { Cat } from './cat.entity';
@Injectable()
export class CatsService {
constructor(
@Inject('CATS_REPOSITORY')
private catsRepository: typeof Cat
) {}
async findAll(): Promise<Cat[]> {
return this.catsRepository.findAll<Cat>();
}
}
cats.module.ts
import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';
import { catsProviders } from './cats.providers';
import { DatabaseModule } from '../database/database.module';
@Module({
imports: [DatabaseModule],
controllers: [CatsController],
providers: [
CatsService,
...catsProviders,
],
})
export class CatsModule {}
위와 같이 구성을 하면 하나의 DB에 붙을 수 있게 되고, database.provider.ts 를 접속 할 여러 DB로 설정을 하고 필요한 곳에서 가져다가 쓰면 여러 DB에 접속 할 수 있는 환경이 갖추어집니다..!!
하나의 프로젝트에 너무 많은 프로그램이 있는게 꼭 좋지만은 않을 수도 있지만, nestjs는 module 단위로 떼어내기가 워낙 쉽기 때문에 만들어 보고 서버에 부하가 되는 경우 떼어내는 방식으로 하면 좋을 것 같네요!!
@happyberrysboy transfered 50 KRWP to @krwp.burn. voting percent : 100.00%, voting power : 20.03%, steem power : 1932269.38, STU KRW : 1200.
@happyberrysboy staking status : 13840 KRWP
@happyberrysboy limit for KRWP voting service : 13.84 KRWP (rate : 0.001)
What you sent : 50 KRWP (Voting Percent over 100 %)
Refund balance : 46.263 KRWP [62106301 - e902ec6f0aec978f15b259e1658b59e6b831b4ba]
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit