반응형
현재 서버의 데이터를 이용해서 의미있는 데이터를 만들고 싶었다. 하지만 이 작업을 수행하게 되면 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에서 진행하게 된다.
반응형
'프레임워크 > NestJS' 카테고리의 다른 글
Prisma ORM 사용 시 읽기 전용 DB 사용하기 (0) | 2022.06.04 |
---|---|
[NestJS] Subscription과 Guard 사용하기 (0) | 2022.01.14 |
[NestJS] DB 캐시 Redis 사용하기 (0) | 2021.12.16 |
[NestJS] Guard 사용하기 (0) | 2021.12.04 |
[NestJS] 네이버 문자인증 로직 제작하기 (0) | 2021.11.06 |