ormconfig.json 파일로 다중 디비 설정을 하자 !
📢 ormconfig.json 파일 작성
[
{
"name": "default", // 반드시 하나의 db name 이 default 여야 한다!!!
"type": "postgres",
"host" : "127.0.0.1",
"post" : 5432,
"username" : "username",
"password" : "password",
"database" : "db_01",
"entities": [
"dist/**/*.entity.js"
]
},
{
"name": "db_02",
"type": "postgres",
"host" : "127.0.0.1",
"post" : 5432,
"username" : "username",
"password" : "password",
"database" : "db_02",
"entities": [
"dist/**/*.entity.js"
]
}
...
]
하나의 db name을 'default'로 해주는 것 외에는 각자에 맞는 속성을 부여해 주면 된다.
📢 app.module.ts 에 반영
@Module({
imports: [
TypeOrmModule.forRoot(),
TypeOrmModule.forRoot({
name: 'db_02',
type :'postgres',
host : '',
...
}),
],
})
이런 식으로 ormconfig.json 파일에 지정한 name을 통해 db 내용을 전달한다.
이때 이유를 모르겠으나, default가 아닌 db의 정보는 ormconfig.json에서 읽어오지를 않았다.
그래서 직접 작성해줬다. (forRootAsync로 하면 될려나?)
📢 application module 에 적용
// module
@Module({
imports: [TypeOrmModule.forFeature([User, Board], 'db_02')],
// service
@Injectable()
export class MallService {
constructor(
@InjectRepository(User, 'db_02')
private userRepository: Repository<User>,
) {}
...
그리고 default가 아닌 db에 있는 테이블의 entity에 접근할때는 이렇게 connect name 을 명시해 줘야 한다.
수많은 삽질을 하다가, 이 글에서 해답을 찾았당..
https://stackoverflow.com/questions/51994541/nestjs-typeorm-use-two-or-more-databases
📢 + 다른 경로의 json파일 적용하기
적용할 json 파일을 직접 적용할 수도 있다.
// ormconfig.ts
module.exports = require(적용할 파일 위치);
package.json 파일과 같은 위치에 ormconfig.ts 이름의 파일로 다음처럼 적용하고자 하는 json 파일을 불러오면 된다.
나의 경우, 사용하는 db가 여러개였고, dev,qa,prod 별로 내용이 달랐으며, 이 경우 이렇게 처리했다.
// ormconfig.ts
const node_env = process.env.NODE_ENV.trim();
module.exports = require(`./src/config/${node_env}/ormconfig.json`);
📢 master/slave 설정
type:'postgresql',
replication: {
master: {
"host" : "127.0.0.1",
"post" : 5432,
"username" : "username",
"password" : "password",
"database" : "db_01"
},
slaves: [{
"host" : "127.0.0.2",
"post" : 5432,
"username" : "username",
"password" : "password",
"database" : "db_01"
}],
},
...
반응형
'nodejs' 카테고리의 다른 글
또 사용할것 같은 custom 함수들 (0) | 2022.12.07 |
---|---|
redis connect (0) | 2022.06.09 |
typescript 꿀팁 (0) | 2022.03.03 |
typeorm repository 뿌수기 (0) | 2022.02.15 |
aws s3 endpoint 적용기 (0) | 2022.02.04 |