728x90
오류가 발생한 코드
더보기
// routes/cash.router.js
import express from 'express';
import { prisma } from '../utils/prisma/index.js';
const router = express.Router();
// 선물캐시 email
router.post('/cash/gift', async (req, res, next) => {
const { email } = req.body;
try {
// email이 있는지 확인
const isEmail = await prisma.manager.findFirst({
where: { email: email },
select: {
email: true,
},
});
// 있으면
if (!isEmail) {
return res
.status(404)
.json({ message: '존재하지 않는 Email 입니다.' });
}
const giftCash = Math.floor(Math.random() * 200) + 20;
// 원래 캐시
const originalCache = await prisma.manager.findFirst({
where: { email: email },
select: {
cash: true,
},
});
await prisma.manager.update({
data: { cash: originalCache + giftCash },
where: { email },
});
return res
.status(200)
.json({ message: `${giftCash}캐시를 선물받았습니다.` });
} catch (error) {
console.error('Error gifting cash:', error);
return res.status(500).json({ message: 'Internal server error' });
}
});
// 캐시 구매 email, 캐시, pw
router.post('/cash/payment', async (req, res, next) => {
const { email, buyCash, password } = req.body;
if (!buyCash || buyCash <= 0) {
return res.status(404).json({
message: '구매하련느 캐시는 0 이상의 정수를 입력해주세요.',
});
}
// email이 있는지 확인
const isEmail = await prisma.manager.findFirst({
where: { email: email },
select: {
email: true,
password: true,
},
});
// 없으면
if (!isEmail) {
return res.status(404).json({ message: '존재하지 않는 Email 입니다.' });
}
// 비번틀리면
if (isEmail[1] != password) {
return res.status(404).json({ message: '틀린 비밀번호 입니다.' });
}
const originalCache = await prisma.manager.findFirst({
where: { email: email },
select: {
cash: true,
},
});
await prisma.manager.update({
data: { cash: originalCache + buyCash },
where: { email },
});
return res
.status(200)
.json({ message: `${buyCash}캐시를 결제하셧습니다.` });
});
// 캐시 조회 email
router.get('/cash/:email', async (req, res, next) => {
const { email } = req.params;
try {
const myCash = await prisma.manager.findFirst({
where: { email: email },
select: {
nickname: true,
cash: true,
},
});
if (!myCash) {
return res.status(404).json({ message: 'User not found' });
}
return res.status(200).json({ data: myCash });
} catch (error) {
console.error('Error fetching cash data:', error);
return res.status(500).json({ message: 'Internal server error' });
}
});
export default router;
오타 수정
객체변수인데 정수변수처럼 잘못 썼음
// originalCache는 객체 형태. originalCache -> originalCache.cash
await prisma.manager.update({
data: { cash: originalCache.cash + giftCash },
where: { email },
});
객체변수인데 문자열변수처럼 썻음... 왜 key값도 줬으면서 헛갈리냐....
if (isEmail.password!= password) {
return res.status(404).json({ message: '틀린 비밀번호 입니다.' });
}
랜덤캐시선물은 잘 돌아감
캐시구매에서 뭐가 문제인지 보자...
더보기
// 캐시 구매 email, 캐시, pw
router.post('/cash/payment', async (req, res, next) => {
const { email, buyCash, password } = req.body;
if (!buyCash || buyCash <= 0) {
return res.status(404).json({
message: '구매하려는 캐시는 0 이상의 정수를 입력해주세요.',
});
}
// email이 있는지 확인
const isEmail = await prisma.manager.findFirst({
where: { email: email },
select: {
email: true,
password: true,
},
});
// 없으면
if (!isEmail) {
return res.status(404).json({ message: '존재하지 않는 Email 입니다.' });
}
// 비번틀리면
if (isEmail.password != password) {
return res.status(404).json({ message: '틀린 비밀번호 입니다.' });
}
const originalCache = await prisma.manager.findFirst({
where: { email: email },
select: {
cash: true,
},
});
await prisma.manager.update({
data: { cash: originalCache + buyCash },
where: { email },
});
return res
.status(200)
.json({ message: `${buyCash}캐시를 결제하셧습니다.` });
});
ㅋㅋㅋㅋㅋ 비번이 계정테이블에 있는데 메니저 테이불에서 찾고있었네
중첩 select로 계정에서 비번 찾음
const isEmail = await prisma.manager.findFirst({
where: { email: email },
select: {
email: true,
account: {
select: {
password: true, // Account.password
},
},
},
});
비번일치문제 발생
{
"message": "틀린 비밀번호 입니다."
}
중첩 select를 사용하면서 isEmail.password가 아니라 isEmail.account.password를 사용해야 함.
// 비번틀리면
if (isEmail.account.password != password) {
return res.status(404).json({ message: '틀린 비밀번호 입니다.' });
}
됬다!!!
더보기
// routes/cash.router.js
import express from 'express';
import { prisma } from '../utils/prisma/index.js';
const router = express.Router();
// 선물캐시 email
router.post('/cash/gift', async (req, res, next) => {
const { email } = req.body;
try {
// email이 있는지 확인
const isEmail = await prisma.manager.findFirst({
where: { email: email },
select: {
email: true,
cash: true,
},
});
// 있으면
if (!isEmail) {
return res
.status(404)
.json({ message: '존재하지 않는 Email 입니다.' });
}
const giftCash = Math.floor(Math.random() * 200) + 20;
// originalCache는 객체 형태. originalCache -> originalCache.cash
await prisma.manager.update({
data: { cash: isEmail.cash + giftCash },
where: { email },
});
return res
.status(200)
.json({ message: `${giftCash}캐시를 선물받았습니다.` });
} catch (error) {
console.error('Error gifting cash:', error);
return res.status(500).json({ message: 'Internal server error' });
}
});
///////////////////////////////////////////////////////////////////////////
// 캐시 구매 email, 캐시, pw
router.post('/cash/payment', async (req, res, next) => {
const { email, buyCash, password } = req.body;
if (!buyCash || buyCash <= 0) {
return res.status(404).json({
message: '구매하려는 캐시는 0 이상의 정수를 입력해주세요.',
});
}
const isEmail = await prisma.manager.findFirst({
where: { email: email },
select: {
email: true,
cash: true,
account: {
select: {
password: true, // Account.password
},
},
},
});
// 없으면
if (!isEmail) {
return res.status(404).json({ message: '존재하지 않는 Email 입니다.' });
}
// 비번틀리면
if (isEmail.account.password != password) {
return res.status(404).json({ message: '틀린 비밀번호 입니다.' });
}
await prisma.manager.update({
data: { cash: isEmail.cash + buyCash },
where: { email },
});
return res
.status(200)
.json({ message: `${buyCash}캐시를 결제하셧습니다.` });
});
/////////////////////////////////////////////
// 캐시 조회 email
router.get('/cash/:email', async (req, res, next) => {
const { email } = req.params;
try {
const myCash = await prisma.manager.findFirst({
where: { email: email },
select: {
nickname: true,
cash: true,
},
});
if (!myCash) {
return res.status(404).json({ message: 'User not found' });
}
return res.status(200).json({ data: myCash });
} catch (error) {
console.error('Error fetching cash data:', error);
return res.status(500).json({ message: 'Internal server error' });
}
});
export default router;
'내일배움 과제 > CH3 풋살온라인게임' 카테고리의 다른 글
회의 24.12.04 (0) | 2024.12.04 |
---|---|
회의 241203 (2) | 2024.12.03 |
오류노트 (1) | 2024.12.02 |
회의 1202 _ 와이어프레임, DB테이블 (1) | 2024.12.02 |
발제 (2) | 2024.11.29 |