인프런 커뮤니티 질문&답변

현석오님의 프로필 이미지
현석오

작성한 질문수

Prisma로 알아보는 postgreSQL와 mongoDB

prisma 설정하고 미들웨어 사용해보기

prisma 설정하고 미들웨어 사용해보기 강의 관련 질문들

작성

·

634

·

수정됨

0

 

 

질문1

prisma 설정하고 미들웨어 사용해보기까지의 schema.prisma 코드가 있으신가요?

 

질문2

그리고 prisma.push 하면 schema.prisma 에 모델로 설정되어 있는 것들만 스키마의 테이블로 등록 되는건가요? 혹시 없는 테이블들이 pgadmin 에서 미리 만들어져 있을 경우 어떻게 되나요?

 

prisma.push 만 사용하면 장고처럼 migrations migrate 따로 관리 안해도 되나요?

 

질문3

프리즈마 서비스 생성자 함수에 다음과 같이 설정하면 프리즈마 쿼리와 에러 정보를 확인 할수 있다 그렇게 생각하면 되나요? 그리고 그게 미들웨어 방식으로 설정하는 거죠?

질문4

아래 코드에서 params 는 백엔드에서 orm 으로 넘기는 파라미터 정보 next 는 디비로부터 오는 정보가 맞나요? 그리고 이 미들웨어는 자동으로 실행되는건가요? return 값은 어디로 가나요?

 

 

답변 1

0

yongsoocho님의 프로필 이미지
yongsoocho
지식공유자

안녕하세요. 현석님 열심히 제 강의를 들어주시는 것 같아서 감사드립니다. :)

질문1) prisma 설정하고 미들웨어 사용해보기까지의 schema.prisma 코드가 있으신가요?

깃헙 링크

질문2)

그리고 prisma.push 하면 schema.prisma 에 모델로 설정되어 있는 것들만 스키마의 테이블로 등록 되는건가요?
-> 넵 맞습니다. prisma가 schema.prisma를 해석하여 ALTER(테이블을 변경하는 SQL 명령어)로 테이블 정보들을 생성해 DB에 집어넣습니다.

혹시 없는 테이블들이 pgadmin 에서 미리 만들어져 있을 경우 어떻게 되나요?
-> 테이블들을 pgadmin을 통해 만들어 놓고 push 하면 당연하게도 기존 정보들은 모두 날라갑니다.
이럴 경우는 pull 을 통하여 먼저 pgadmin에 있는 테이블들의 정보를 받고
수정 후 push 를 하면 기존 테이블들을 유지할 수 있습니다.

 prisma.push 만 사용하면 장고처럼 migrations migrate 따로 관리 안해도 되나요?
-> 일단 nosql 은 migrate 가 없고 무조건 push 를 해야합니다.
postgresql 같은 경우는 migrate를 통하여 버전관리를 하면서 , db 명령어를 통하여 그냥 정보를 주입할지 둘 중 선택을 해야합니다.

질문3

프리즈마 서비스 생성자 함수에 다음과 같이 설정하면 프리즈마 쿼리와 에러 정보를 확인 할수 있다 그렇게 생각하면 되나요?
-> 맞습니다. 사진의 super() 은 PrismaClient 의 생성자이며 여기에는 백엔드에 있는 client(ORM)에 대한 간단한 설정들이 있습니다.
그리고 그게 미들웨어 방식으로 설정하는 거죠?
-> 제가 질문을 살짝 이해를 못했는데요. 말해보자면 $use() 부분은 super()부분(..그저 설정일 뿐)과 별개로 미들웨어(express 에서 중요한 개념인 그 것과 동일합니다.) 입니다.
next() 로 프리즈마 엔진에 쿼리들을 넣기 전에 여러 작업(시간 측정, 들어가면 안되는 테이블일 경우 제한, 보안의 목적, 어떤 쿼리가 많이 발생하는지 통계 등)에 사용될 수 있습니다.

수업에서도 설명했지만, prisma client -> prisma engine -> db -> prisma engine -> prisma client 과정을 통해 쿼리들이 왔다리 갔다리 하며 next() 함수 전부분, 후부분이 각각 -> 인 부분입니다 ^^

질문4

아래 코드에서 params 는 백엔드에서 orm 으로 넘기는 파라미터 정보 next 는 디비로부터 오는 정보가 맞나요?
-> 네 맞습니다. prisma client -> prisma engine -> db -> prisma engine -> prisma client 에서
next() = prisma engine -> db -> prisma engine 부분이며 db 에서 들어갔다 나온정보를 넘겨줍니다.

그리고 이 미들웨어는 자동으로 실행되는건가요? return 값은 어디로 가나요?
-> 미들웨어는 쿼리들을 백엔드에서 실행시킬 때 마다 자동 실행됩니다. (this.prisma 로 실행하는 것들..)
return 값은 db 에서 나온 결과 값들을 전달해주며 return 을 안쓰면 백날 쿼리를 써봐도 아무것도 결과가 안나옵니다.

현석오님의 프로필 이미지
현석오

작성한 질문수

질문하기