프레임워크/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에서 진행하게 된다.
반응형