내일배움캠프 TIL (230206): 이커머스 프로젝트 6일차 - sequelize include 사용하기

Jiumn·2023년 2월 7일
0

목표: 장바구니와 상품 테이블을 연결해서 해당 상품의 이미지를 가지고 오고 싶다

왜냐하면 장바구니 테이블에 상품 이미지를 저장하지 않기 때문.
찾아보니 include 함수가 sql 쿼리의 join이랑 같은 거라고 함.

바로 작성 ㄱㄱ

실행 후 에러 발생.
error: Product is not associated to Cart!

문제는 Cart 테이블이 Product와 바로 연결이 되어 있지 않다는 것.

model 파일의 association을 보면 cart가 through로 연결되어 있음.
이것은 product와 user의 관계를 장바구니 테이블을 거쳐가는 것으로 표현하는 것.
(너무 어려움...)

User 테이블과 Product 테이블이 연결되어 있기 때문에
User 테이블에서 Product를 join(=include)해서 가져와야 함.

sequelize include 문법으로 작성하면

동작이 안 된다...?!

테이블을 바꿨으니 컬럼 명도 바꿔줘야 함.
User 모델에서 해당하는 user_id로 변경 필요

class CartsRepository {
  getCarts = async (userId) => {
    const CartData = await User.findOne({
      where: { id: userId },
      include: [
        {
          model: Product,
          as: "carts",
        },
      ],
    });
    return CartData;
  };
  • 데이터 출력 결과

여기서 필요한 데이터만 뽑아서 골라쓰면 됨.

profile
Back-End Wep Developer. 꾸준함이 능력이다.

0개의 댓글