마이페이지-개인정보수정 기능을 구현하고 있다.
이전에 DB 값 삭제(탈퇴) 구현에서 한참을 애먹었었다.
https://codelist.tistory.com/71
[Node.js, Vue.js, MongoDB] ::디버깅 실패:: 세션 구현하기
기록 파일에 세션을 저장하는 것도 여전히 안되고 그나마 DB에 세션을 저장하는 게 될 가능성이 있다고 판단해서 여기를 집중적으로 해봤는데 여전히 안된다. 파일에 세션 저장하는 것처럼 아예
codelist.tistory.com
https://codelist.tistory.com/81
[Node.js, Vue.js] 탈퇴 기능(mongodb)
나는 mongodb를 사용하기 때문에 remove(구버전이라 이제 사용 X), deleteOne(), deleteMany() 등의 명령어를 사용해서 document를 삭제해야하는 데 삭제가 안됐다. 해결하고보니 두 가지의 문제점이 있었다.
codelist.tistory.com
그래도 해결했으니 설령 UPDATE 기능이 안되더라도 대처할 수 있겠다 싶었는데 UPDATE는 웬만한 시도를 다 해봤으나 동작하지 않았다.
UPDATE에서 막힐 거라고는 생각도 못했었는데 DELETE보다 안 되니까 이쯤되면 사실 DELETE도 완벽하게 구현된 게 아닌가? 라는 생각이 들었다.
일단 update, updateOne, findAndModify, findOneAndUpdate 등등 시도해봤고 앞에 컬렉션이름.~, db이름.~ 등 다 갖다붙여봤고 DELETE 구현할 때 시도해봤던 FindOne/Find 사용해보고 아예 없애보기도 했는데 5일동안 구현하지 못했다.
해결
Mongoose Atomic Update 방식을 찾아서
Account 컬렉션은 transaction 도큐먼트의 objectId를 자신의 필드인 transactions에 추가하여야 한다. 그 과정은 다음 두 가지 일을 해야 한다. Account Object Id로 Account 도큐먼트를 찾는다. 그 도큐먼트의 trasa
velog.io
backend/routes/index.js
router.post('/mypage', (req, res) => { //마이페이지 정보 수정
User.findOne({name : req.cookies.session},(err, users) => {
if(!req.cookies.session || err) { // 쿠키 없거나 에러 났을 때
res.redirect('/');
} else {
users.updateOne({$set : {phone : req.body.phone}}).exec(); // 여기!!
res.redirect('/mypage');
}
})
})
마지막에 .exec() 붙이니까 된다.
'Node.js' 카테고리의 다른 글
[AWS] [올랑올랑 종료] 백그라운드 배포하기 (0) | 2022.01.17 |
---|---|
[Node.js] 세션 구현하기 (express-session) (0) | 2022.01.10 |
[Node.js, Vue.js] alert 띄우기 (0) | 2021.12.31 |
[Node.js, Vue.js] res.json으로 Vue에 값 전달하기 (0) | 2021.12.26 |
[Node.js, Vue.js] 탈퇴 기능(mongodb) (0) | 2021.12.21 |