Ayden's journal

관계 데이터 다루기

schema.prisma 파일을 통해 모델을 만들고, 각 테이블 사이의 관계를 정의했다. prisma를 사용하면 특정 객체에 대해 작업할 때, 연결할 수 있거나 연결 되어있는 다른 객체에 대한 작업도 함께 진행해줄 수 있다. 아래에서 사용하는 모델은 Prisma Schema에서 정의한 걸 기준으로 한다.

 

함께 생성하기

유저와 장바구니는 일대일 관계이므로 유저를 생성할 때 장바구니도 함께 생성할 수 있으면 좋을 것 같다. prisma는 이를 create 프로퍼티를 통해 지원하고 있다.

prisma.user.create({
  data: {
    ...userFields,
    cart: {
      create: {
        someProperty: true;
      },
    }
  }
});

 

함께 수정하기

그래야하는 이유가 어떤 게 있을지는 좀처럼 떠올리기 힘들지만, 아무튼 어떠한 사정으로 인해 유저를 수정할 때마다 장바구니의 데이터 일부를 수정해야 한다고 해보자.

prisma.user.update({
  where: { id },
  data: {
    ...userFields,
    cart: {
      update: {
        someProperty: false;
      }
    }
  }
})

 

연결하기 / 연결 해제하기

제품을 장바구니에 넣고 빼는 행위는 서로 다른 객체를 연결하고 연결 해제하는 행위라고 볼 수 있다. prisma는 이를 update 프로퍼티를 통해 지원하고 있다.

prisma.product.update({
  where: { id },
  data: {
    cart: {
      connect / disconnect: {
        id: cartId
      },
    },
  },
})

블로그의 정보

Ayden's journal

Beard Weard Ayden

활동하기