방명록
- [Next.js] prisma에서 DB 테이블 연동이 안되는 문제?!2023년 11월 23일 11시 34분 00초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
1. 왜 prisma에서 DB 테이블 연동이 안 되는 걸까?
Next.js 프로젝트에 prisma ORM을 적용하여 작업 중이다. 새로운 모델(CouponSetting)을 만들었다.
// prisma/migrations/schema.prisma // (생략) model CouponSetting { id Int @id @default(autoincrement()) //(생략) }
변경된 내용을 적용하기 위해 마이그레이션 명령어를 실행하였다( <migration_name>에 로그를 위한 마이그레이션 명을 임의로 작성).
npx prisma migrate dev --name <migration_name> // 마이그레이션 생성
(npx prisma migrate dev 명령 입력, 엔터 후 이름을 작성해도 된다.)변경된 모델에 맞게 Prisma Client를 재생성하였다.
npx prisma generate
이 모든 과정은 오류 없이 완료되었다. 그런데 왜 CouponSetting 모델과 prisma가 연동되지 않는 걸까?
2. 빈틈없이 모든 과정을 마쳤다면, 그냥 VSCODE를 껐다 켜라!
모델을 추가하고 마이그레이션과 관련된 모든 명령어가 잘 수행되었음에도 불구하고 prisma와 해당 모델로 인해 생성된 테이블과 연동이 되지 않았다. 기존에 있던 테이블과의 연동은 아무 문제없었으니 더 미칠 노릇이다. 한참의 시간 동안 씨름하다 VSCODE를 재구동해 보았다. 그랬더니 prisma에서 CouponSetting에 접근할 수 있었다. 뭔가 당한 느낌을 컴퓨터한테 받다니...
아래는 해당 컴포넌트 코드이다.
// route.ts import prisma from "@/app/lib/prisma"; interface CouponSetting { // (생략) } export async function POST(request: Request) { const body: CouponSetting = await request.json(); // 아래 코드가 prism와 couponsetting 테이블의 연동이 필요한 부분이다. // couponsetting 테이블이 prisma에게 인식이 되면 체이닝할때 에러 없이 연결이 가능하다. // // [특이 사항] // 1. prisma 모델을 작성할 때 파스칼 케이스(CouponSetting) 사용함 // 2. 마이그레이션 후 couponsetting라는 DB 테이블명 생성됨 // 3. prisma 사용을 위해 체이닝할때는 카멜 케이스(couponSetting)로 접근 가능함 const createdCouponSetting = await prisma.couponSetting.create({ data: { // (생략) }, }); return new Response(JSON.stringify(createdCouponSetting)); }
728x90반응형'언어·프레임워크 > Next.js' 카테고리의 다른 글
[Next.js] App Router 프로젝트, VSCODE에서 라우터 한눈에 보기 (0) 2023.12.28 [Next.js] html2canvas 이미지 잘림 문제 (0) 2023.12.08 [Next.js] NextAuth의 Credentials로 App Router에서 자체 인증, 인가 로그인 구현 (0) 2023.11.20 [Next.js] addEventListener로 적용된 클릭 이벤트가 다른 페이지에서도 지속적으로 작동하는 문제@_@ (0) 2023.11.13 [Next.js] 제로초 Next.js 동영상 강의 #1 정리 : App Router 이용 X.com 클론코딩 (0) 2023.11.05 다음글이 없습니다.이전글이 없습니다.댓글