C.R.U.D #1

jihyun·2021년 9월 16일
1

backend

목록 보기
8/13
post-thumbnail

C.R.U.D?

Create(생성), Read(조회), Update(수정), Delete(삭제)

C.R 하기 전, Prisma Client?

Prisma로 연결되어 있는 데이터베이스의 테이블들을 쉽게 접근할 수 있게 해주는 Client 역할
prisma.schema 파일에서 정의한 테이블, 칼럼 이름 직접 사용 (+ 자동완성)

설치

npm install @prisma/client --save

ORM ver

//data를 추가, 수정하는 post 메소드
//첫번째인자 route, 두번째인자는 controller(요청 들어왔을 때 어떻게 할지)
//async? db에 접근하는 건 통신이다. 통신은 비동기적으로 실행된다.
//await? '기다리는 우선순위를 주는 느낌'? 
//비동기는 오래 걸리는 애들을 기다리지 않고 넘어가는데 db에 접근해서 데이터를 다 가져와야 반환할 수 있음 
//따라서 db에 접근하는 로직을 await으로 처리, async 안에서만 !
app.post('/categories', async (req, res) => {
  prisma.category.create({
    data: {
      name:'티',
   }
   });
  res.json(category);
});
//data를 가져오는 get 메소드
app.get('/categories', async (req, res) => {
  const categories = await prisma.category.findMany();

  res.json(categories);
})

Raw Query ver

SQL문법 사용! => SQL 구문은 SQL 컨벤션을 잘 지켜서 작성 (끝나고 ;)

app.post('/categories', async (req, res) => {
  await prisma.$queryRaw`
    INSERT INTO drinks (name)
    VALUES ('콜드 브루')`;

//추가한 데이터를 보여주기
  
   const [drinks] =  await prisma.$queryRaw`
  	SELECT d.name
    FROM drinks d
    ORDER BY id DESC
    LIMIT 1
`;

  res.json(drinks); // []
});

$queryRaw는 항상 배열에 담아서 반환
하나의 데이터만 가져오기 때문에 배열 비구조화 사용 -> [categories] -> 배열 안의 객체로

0개의 댓글