프레임워크/NestJS

[NestJS] Prisma db 여러개 연결하기

트리맨스 2022. 1. 8. 00:20
반응형

 

 

 

현재 서버의 데이터를 이용해서 의미있는 데이터를 만들고 싶었다. 하지만 이 작업을 수행하게 되면 DB에 자원이 많이 소모되기 때문에, 기존의 db를 새 db에 마이그레이션 한 이후 이 db에서 데이터를 추출하고 싶었다. 여기서 문제가 되는 것이 복사한 db에서 의미있는 값을 뽑아낸 뒤에 기존의 db에 바로 올리기 위해서는 한 대의 서버에 2개의 db를 연결해야 했다. 나는 NestJS + Prisma 를 사용하므로, Prisma에 대한 방법을 정리해 보았다.

 

 

DB 2개 연결하기


Prisma에 DB를 연결하는 방법은 prisma.schema 파일에 db의 주소를 넣으면 된다. 현재 생성하는 db가 2번째 일 경우, 스키마에 새로 추가할 것이 output 항목이다. generate 명령어를 실행하게 되면 클라이언트 파일을 만들게 되는데, 이 파일의 위치를 다음과 같이 직접 지정해야 한다.

 

1
2
3
4
5
6
7
8
9
10
generator client {
  provider      = "prisma-client-js"
  binaryTargets = ["native""rhel-openssl-1.0.x"]
  output        = "./client1"
}
 
datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL_")
}
cs

 

그 이후 "npx prisma generate --schema [파일이름]" 명령어를 입력하게 되면 위 코드의 output 위치에 클라이언트 파일이 생기게 된다. 이를 이용해서 prisma.service를 제작한다.

 

1
2
3
4
5
6
7
8
9
10
11
import { Injectable } from '@nestjs/common';
// 2번째 프리즈마 클라이언트를 불러온다.
import { PrismaClient } from '../../prisma/client1';
 
@Injectable()
export class PrismaService2 extends PrismaClient {
  constructor() {
    super();
  }
}
 
cs

 

위에서 생성한 PrismaService2 클래스를 다른 서비스에서 사용하면 된다. prismaService2를 이용한 CRUD 동작은 모두 2번째 db에서 진행하게 된다.

 

 

 

 

반응형