
오늘은 nodejs와 mongodb, aws ec2 배포를 사용한 쇼핑몰 백엔드 구축 과제의 제출일이다! 오늘 쓸 것은 어제와 오늘 마주했던 에러들과 개선 방안이다.
-> 로컬 .git 파일을 삭제해서 다시 시작했다! 일반 창에선 보이지 않고 보기 중 표시 -> 숨긴 파일을 눌러야 흐릿한 .git파일이 보이고 그것을 삭제했다.
//package.json
"scripts": {
"format": "prettier --write *.js **/*.js"
}
이므로 yarn run format까지 해줘야 prettier가 적용된다.


(수정한 코드)
그래서 req.params.productId로 특정을 지었더니 잘 찾아왔다.
(여담)
문제는 이 부분을 수정하고 나니 수정 기능과 삭제 기능에서 에러가 발생... 이유는 아직도 모르겠음🙄 아무튼 수정한 코드는 아래와 같다.
/** 상품 정보(content,) 수정 API(pw 동일시)**/
router.patch('/products/:productsId', async (req, res) => {
const productsId = req.params.productsId;
const { product, content, pw, soldStatus } = req.body;
// 나의 id에 맞는 상품이 무엇인지 찾는다.
const currentProduct = await Item.findById(productsId).exec();
if (!currentProduct) {
return res
.status(404)
.json({ errorMessage: '상품 조회에 실패하였습니다.' });
}
//비밀번호가 일치할 때 수정 기능
if (product) {
const targetProduct = await Item.findOne({ product }).exec();
if (pw === targetProduct.pw && product === targetProduct.product) {
targetProduct.content = currentProduct.content;
targetProduct.soldStatus = currentProduct.soldStatus;
await targetProduct.save();
} else {
return res
.status(404)
.json({ errorMessage: '상품명과 비밀번호가 다릅니다.' });
}
currentProduct.content = content;
currentProduct.soldStatus = soldStatus;
} else {
return res
.status(404)
.json({ errorMessage: '상품 조회에 실패하였습니다.' });
}
문제 상황은 상품의 이름과 비밀번호를 맞게 입력했는데 상품명과 비밀번호가 다르다는 에러 메세지가 뜨는 것이었다...
상품 조회에 실패했다는 메세지가 뜨지 않은 것으로 보아 req은 잘 수행했고, 비밀번호가 문제라는 것인데 알고보니 나빼고 다른 사람들 다 비밀번호가 string이었더라🥲.. 그래서 혹시 number가 string으로 변환된것인가 싶어 typeof치고 console.log로 pw 출력해보았는데 여전히 숫자가 맞았다.
... 문제는 내가 입력한 비밀번호였다. 맞는 비밀번호는 1234였는데 엉뚱한 숫자를 입력한 것🙃... 노드는 잘못이 없었다.
(내 헛짓거리에 낮잠도 반려하고 도와주신 이전 팀원들에게 무한한 감사를 보냅니다)
#내일배움캠프TIL