Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
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
Archives
Today
Total
관리 메뉴

사고쳤어요

[도서 쇼핑몰] Node.js - 장바구니 API 구현 본문

웹 풀스택

[도서 쇼핑몰] Node.js - 장바구니 API 구현

kevinmj12 2025. 3. 17. 22:52

장바구니 추가

// 장바구니 추가
const addCartItems = (req, res) => {
  const { book_id, counts, user_id } = req.body;

  const sql = `INSERT INTO cart_items (book_id, counts, user_id) VALUES (?, ?, ?);`;
  const values = [book_id, counts, user_id];

  conn.query(sql, values, (err, results) => {
    if (err) {
      return res.status(StatusCodes.BAD_REQUEST).json({
        msg: `Error: ${err.code}`,
      });
    }
    return res.status(StatusCodes.CREATED).json(results);
  });
};

 

 

장바구니 조회(선택된 아이템들)

// 장바구니 아이템 목록 조회
const getCartItems = (req, res) => {
  const { user_id, selected } = req.body;

  const sql = `SELECT cart_items.id, book_id, title, summary, counts, price 
                FROM cart_items LEFT JOIN books 
                ON cart_items.book_id = books.id
                WHERE user_id = ? AND cart_items.id IN (?);`;
  const values = [user_id, selected];

  conn.query(sql, values, (err, results) => {
    if (err) {
      return res.status(StatusCodes.BAD_REQUEST).json({
        msg: `Error: ${err.code}`,
      });
    }
    return res.status(StatusCodes.OK).json(results);
  });
};

참고로 selected는 장바구니에서 선택한 도서들을 의미한다. (계산 주문서로 전달해주기 위해)

즉 user_id가 1인 사람이 장바구니에서 book_id가 1번, 3번인 도서를 체크하여 조회할 때

user_id = 1, selected = [1, 3]이 되는 것이다.

장바구니 제거

// 장바구니 제거
const removeCartItems = (req, res) => {
  const { id } = req.body;

  const sql = `DELETE FROM cart_items WHERE id = ?;`;
  const values = [id];

  conn.query(sql, values, (err, results) => {
    if (err) {
      return res.status(StatusCodes.BAD_REQUEST).json({
        msg: `Error: ${err.code}`,
      });
    }
    return res.status(StatusCodes.OK).json(results);
  });
};