웹 풀스택

[도서 쇼핑몰] 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);
  });
};