전체 글 (154) 썸네일형 리스트형 Prisma2 CLI를 사용하여 데이터베이스 테이블 생성 인스타그램 클론코딩에 사용된 schema.prisma 파일로 부터 데이터베이스 테이블을 생성해 보겠습니다. 참조: GraphQL with Prisma2 설계 구조 schema.prisma [인스타그램 클론코딩] Prisma2 데이터 모델링 포스트에서는 모델링만 했지만, 사실 schema.prisma 파일에 데이터베이스와 Prisma 클라이언트에 대한 설정도 해 주어야 합니다. // 데이터베이스 설정 datasource db { provider = "mysql" url = env("DATABASE_URL") } // Prisma 클라이언트 설정 generator client { provider = "prisma-client-js" binaryTargets = ["rhel-openssl-1.0.x"] //b.. [인스타그램 클론코딩] Prisma2 데이터 모델링 UserFollows Relation은 Self Relation이고, 나머지는 1:N Relation입니다. 참조: 1:1 Relation schema.prisma Nullable은 사용하지 않았습니다. 대신 default 값으로 빈 문자열(@default(value: ""))지정해 주었습니다. 그리고 배열은 아무것도 없는 경우 []를 반환하므로 ?를 사용할 필요도 없고 사용하지도 못합니다. 저는 Relation을 통해서 저장소들이 연결되는 통로를 만들었다고 생각합니다. 1:N Relation User(1) → Post(N) → User(1) User(1) → Like(N) → User(1) User(1) → Comment(N) → User(1) Post(1) → Like(N) → Post(1) Post.. Prisma2 데이터 모델링3 - Self Relation 테이블 내 두 개의 레코드를 1:1로 매칭시킵니다. 사용예(Usecase) Following 시스템 schema.prisma model User { id Int @default(autoincrement()) @id followers User[] @relation("UserFollows", references: [id]) following User[] @relation("UserFollows", references: [id]) } 역시 Relation이기 때문에 컬럼이 생성되지 않습니다. 참조: Prisma2 데이터 모델링1 - 1:1 Relation 대신 Self Relation은 Relation에 사용된 심볼("UserFollows")에 언더바(_)가 추가된 Relation 테이블이 데이터베이스에 생성.. Prisma2 데이터 모델링2 - 1:N Relation 한 개의 레코드와 다른 테이블의 다수 레코드를 1:N으로 매칭시킵니다. 사용예(Usecase) User.post ↔ Post Post.comments ↔ Commnet 1:1 Relation과 거의 동일합니다. 다음은 User 테이블의 Posts 레코드에 다수의 Post 테이블 레코드를 연결시킨 예제입니다. 단지 다수의 레코드가 연결된 한 개의 레코드가 배열 타입으로 변경됐을 뿐입니다. schema.prisma model User { id Int @default(autoincrement()) @id posts Post[] } model Post { id Int @default(autoincrement()) @id user User @relation(fields: [userId], references: [.. Prisma2 데이터 모델링1 - 1:1 Relation 서로 다른 테이블의 레코드를 1:1로 매칭시킵니다. 사용예 (Usecase) User.profile ↔ Profile.userId 다음은 User 테이블의 profile(Profile 타입) 컬럼을 Profile 테이블의 레코드에 1:1로 연결시킨 예입니다. schema.prisma model User { id Int @default(autoincrement()) @id profile Profile? // Nullable } model Profile { id Int @id @default(autoincrement()) user User @relation(fields: [userId], references: [id]) userId Int bio String? // Nullable } Prisma2부터 Re.. GraphQL with Prisma2 설계 구조 개발자가 GraphQL 모델(model.graphql)과 대응하는 Prisma 모델(schema.prisma)을 작성해 줍니다. Prisma1에선 GraphQL 모델과 Prisma 모델이 거의 비슷했지만, Prisma2는 약간 달라졌습니다. Prisma CLI를 사용하여 Prisma 모델 구조를 따르는 데이터베이스 테이블을 생성합니다. 참조: Prisma CLI를 사용하여 데이터베이스 테이블 생성 Prisma CLI를 사용하여 Prisma 클라이언트를 생성합니다. 참조: Prisma2 클라이언트 생성 GraphQL 모델(model.graphql)이 뭔가요? 타입, 쿼리, Mutation을 정의해 놓은 graphql 파일입니다. 예를 들어 User라는 타입을 정의할 때는 User가 갖는 속성들 id, na.. Prisma1 vs Prisma2 비교 Prisma1을 사용하려면 2개의 백앤드가 필요했습니다. GraphQL 서버 모듈인 Prisma 클라이언트가 데이터베이스와 직접 통신하는 것이 아니라 GraphQL 서버로 동작하는 Prisma 서버가 데이터베이스와 통신하며, Prisma 클라이언트는 GraphQL 서버와 Prisma 서버간의 중개 역할만 합니다. Prisma CLI를 사용하여 Prisma 서버를 Prisma 개발 서버에 생성할 수 있고, 이렇게 생성된 서버를 heroku에 쉽게 배포할 수 있지만, 번거로울 뿐만 아니라 서버 비용이 추가로 발생하는 문제가 있습니다. 또한 자바 환경에서 동작하기 때문에 메모리 문제가 있을 수도 있습니다. Prisma2는 Prisma 클라이언트에 Prisma 서버의 기능을 통합했습니다. 자바스크립트 모듈인 P.. Prisma2 설치 (CLI, 클라이언트) Prisma CLI(@prisma/cli)와 클라이언트(@prisma/client) 두 개의 모듈을 설치해 주어야 합니다. npm install @prisma/cli --save-dev npm install @prisma/client Prisma CLI는 개발할 때만 사용되기 때문에 --save-dev 옵션을 추가해 줍니다. schema.prisma 파일을 작성한 후에 Prisma CLI를 사용해서 데이터베이스 테이블을 생성하거나 Prisma 클라이언트를 생성할 수 있습니다. 참조: Prisma2 CLI를 사용하여 데이터베이스 테이블 생성 참조: Prisma2 클라이언트 생성 Prisma CLI(@prisma/cli)가 schema.prisma 파일로 부터 Prisma 클라이언트를 ./node_modul.. 이전 1 ··· 4 5 6 7 8 9 10 ··· 20 다음