레디스는 키-값 형식이어서 객체로 저장후 => json.stringify() 메서드를 사용해 json데이터로 직렬화시켜준다.
app.post("/couponOn", async (req, res) => {
try {
// 본문에 post요청할때
const { discountAmount, ttl } = req.body;
if (!discountAmount || discountAmount <= 0) {
return res.status(400).json({ error: "유효한 금액을 입력하세요." });
}
const couponId = uuidv4(); // 고유 쿠폰 ID 생성
// 객체로 저장
const couponData = { discountAmount, createdAt: new Date() };
console.log(couponData)
//레디스는 문자열이라 객체를 json으로 직렬화해준다 그리고 body에 받은 ttl로 시간제한
await redisClient.setEx(couponId, ttl, JSON.stringify(couponData));
res.status(201).json({
message: "쿠폰이 생성되었습니다.",
couponId,
discountAmount,
ttl,
});
.......................
할인금액을 연산시켜주려면 parse() 메서드를 사용해 json데이터를 다시 객체로 역직렬화 해준다.
if (couponData) {
const origin = 70000
// 직렬화한 json 데이터를 다시 parse메서드로 역직렬화후 객체로 만들어서 할인된금액으로 연산
const parsed = JSON.parse(couponData)
const discountAmount = parsed.discountAmount
const disPrice = Math.max(0, origin - discountAmount)
console.log(disPrice)
return res.status(200).json({message:"쿠폰적용", origin,discountAmount,disPrice})
} else{
return res.status(404).json({message:"쿠폰만료"})
}
결과화면




'portfolio' 카테고리의 다른 글
장고와 레디스 루아스크립트로 선착순쿠폰 만들기 (0) | 2024.12.09 |
---|---|
파이썬 셀레니움을 통한 웹스크래핑 자동화(1. 스크롤기능, 2. 페이지네이션기능) (0) | 2024.06.10 |
HTML, CSS , image slider js웹디자인 포트폴리오 (0) | 2024.06.03 |
Django + Postgresql (트라이그램 유사성을 이용하여 유사한단어 검색하기) (0) | 2024.05.08 |
Django + Postgresql (ORM에서 searchVector를 이용하여 모델의 여러 필드검색), RSS feed 제작 (0) | 2024.05.08 |