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