일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- CSS
- DM
- nodejs
- review
- js
- figma
- ps
- html
- Express
- API
- frontend
- CV
- GAN
- sqlite
- C++
- PyTorch
- ts
- mongo
- Git
- ML
- Linux
- vscode
- react
- python
- UI
- postgresql
- SOLID
- PRISMA
- Three
- DB
- Today
- Total
목록PRISMA (10)
아카이브
DB API를 구현할 때는 한 번의 요청에 대해 여러 개의 함수를 실행하는 경우가 있습니다.이 때 중요한 것은 모든 함수가 한 번에 수행되어야 하는 것인데,중간에 오류가 발생해 처리가 중단되면, 처리가 완결되지 않은 불완전한 상태로 남기 때문입니다. 예를 들어 상품 재고를 관리하는 서버를 생각해봅시다.아래 코드는 주문(order) 요청을 처리하는 엔드포인트로, 크게 두 가지 절차를 진행합니다. 1. order 테이블에 새로운 주문정보에 해당하는 record를 추가 2. 해당 주문에서 요청한 상품들의 수량만큼 product 테이블에서 각 record들의 quantity를 감소(자세한 구현사항은 생략했습니다)const prisma = new PrismaClient();app.post('/order..

일대다/일대일/다대다 관계를 구현하기 위해서는 '다'에 해당하는 테이블에 foreign key를 정의해야 합니다.Prisma에서는 @relation 속성을 이용해 이 foreign key를 정의할 수 있습니다.1. 일대다 아래는 일대다 관계의 예시로, 사용자(User) 테이블과 주문(Order) 테이블의 관계를 나타내었습니다.하나의 사용자는 여러 주문과 연결될 수 있고, 주문 테이블에 userId라는 foreign key 를 추가해 구분합니다.아래는 각각 User와 Order의 Prisma model 코드입니다.Order에는 User를 타입으로 하고 @relation 속성을 가지는 user 필드가 추가됩니다.model User { id String @id @default(uuid()) ..
PrismaClient는 DB의 다양한 CRUD(Create / Read / Update / Delete) 기능을 구현할 수 있도록 함수들을 제공합니다.아래는 PrismaClient에서 사용할 수 있는 함수들의 목록입니다.지속적으로 갱신됩니다. 함수매개변수 기능 count( ){ where: 필드이름 }필드에서 where 조건을 만족하는 record들의 개수를 구합니다.create( ){ data: JSON }data를 값으로 하는 새로운 record를 생성합니다.delete( ){ where: 필드이름}필드에서 where 조건을 만족하는 record를 삭제합니다.findMany( ) 모든 record들을 가져옵니다.findFirst( ){ where: 필드이름}필드에서 where 조건을 만족..

Prisma를 이용해 데이터 시딩(DB에 초기 record 들을 삽입하는 것)을 할 때는API를 만들때와 마찬가지로 PrismaClient 라이브러리를 사용합니다. 우선 시딩을 위해서는 두 가지 JS 코드가 필요하며,코드파일은 schema.prisma 코드와 같은 경로(=터미널로 실행시킬 수 있는 경로)에 있어야 합니다. - 시딩할 데이터를 기록한 mock 파일 (mock.js)- 데이터 시딩을 실행할 시딩 파일 (seed.js) seed.js의 코드는 다음과 같습니다.PrismaClient.user.deleteMany( ) 를 사용해 기존에 있던 데이터들을 초기화하고,PrismaClient.user.createMany( ) 를 사용해 mock.js에 기록된 새로운 데이터들을 추가합니다.두 함수 모두 ..
DB 서버로부터 CRUD(Create / Read / Update / Delete) 기능을 요청하는 API를 구현할 때,미들웨어 함수를 구현할 수 있는 Express 프레임워크를 사용할 수도 있습니다.Prisma를 이용해 Express의 미들웨어 함수를 구현하려면 PrismaClient 라이브러리가 필요합니다.import * as dotenv from 'dotenv';dotenv.config();import express from 'express';import { PrismaClient } from '@prisma/client';const prisma = new PrismaClient();const app = express();app.use(express.json()); PrismaClient에서 사용할..

Prisma studio는 DB 테이블을 쉽게 확인하고 제어할 수 있도록 GUI를 제공하는 기능입니다.Prisma 프로젝트 경로에서 아래 명령어를 실행하면 사용할 수 있습니다.npx prisma studio studio를 실행하면 웹 브라우저에 다음과 같은 페이지가 실행됩니다.각 모델은 다음과 같이 DB 내의 모든 record 들을 표시합니다.record는 Add record를 통해 즉석으로 추가할 수 있습니다.여기서 조건에 맞는 record만 확인하거나(Filters) 특정 속성만 표시할 수 있으며(Fields), record가 많을 경우 한 페이지에 표시되는 값을 설정할 수도 있습니다(Showing).

Prisma에서 PostgreSQL로 마이그레이션 할 때 발생하는 오류입니다.이 경우 PostgreSQL을 설치할 때 함께 설치되는 psql을 이용해 직접 DB를 생성해야 합니다.psql을 검색하여 실행하면 Server > Databse > Port > Username 순서로 정보를 물어봅니다.모두 기본값으로 설정해도 되므로 전부 엔터로 넘기면 됩니다.(대괄호[ ] 안의 값이 기본값입니다) 그 다음엔 비밀번호를 입력합니다. PostgreSQL을 설치할 때 설정한 비밀번호를 입력하면 됩니다.만약 비밀번호를 설정한 적이 없다면 비밀번호는 기본값인 postgres로 되어 있습니다.이제 SQL로 직접 DB 생성 명령어를 입력해주면 됩니다.$ CREATE DATABASE [db 이름];DB가 제대로 생성되었는지 ..

Prisma의 model은 DB의 schema에 해당합니다.하나의 테이블에 들어갈 필드와 그 타입, 각 필드별로 필요한 속성 등을 명시해야 합니다.model을 작성하면 이를 토대로 테이블을 자동 생성할 수 있습니다.model User {// 이름 타입 조건(attribute) id String @id name String}model 작성방법필드는 기본적으로 각 record가 값을 비울 수 없습니다.만약 필드가 값을 입력하지 않아도 된다면, 타입 뒤에 물음표(?)를 추가해 optional field로 만들면 됩니다.model User {// 이름 타입 조건(attribute) id String @id name String ..