EtoC

유저 프로필 Post edit 본문

BackEnd/NodeJs

유저 프로필 Post edit

게리드 2023. 8. 28. 14:51


findByIdAndUpdate()는 update되기전의데이터를 return 해주고
한가지 옵션이 있는데 NEW: true를 주면 findByIdAndupdate가 업데이트된 데이터를 return 해 준다.
즉 mongoose에게 가장 최근에 업데이트된 object를 달라고 하는 것이다.

 


이렇게 해도 화면상의 값은 바뀌지를 않는데 막상 db에 들어가보면 바뀐것을 확인 할 수 있다.

 


edit-profile.pug에서 loggednUser의 값을 입력하는데, 이값이 어디서 생성되었을까?
이값은 localsMiddleware에서 생성되었다.
여기서 loggedUser를 req.session.user이라고 정의하고 있다.
이 req.sessin.user은 로그인할 때 생성되므로 로그인하는 코드를 확인해보자.

 


하이라이트 표시가 된 부분이 로그인할때 user의 req.session.user을 입력해준다.
그래서 user를 업데이트해도 session이 업데이트되지않는다.
DB에서는 user을 업데이트 했으나 session은 db와 연결되어있지 않다.



여기서 가져온 데이터에 새로 값을 덮어씌울거라서...req를 첫줄로 옮겨야한다

또다른 방법으로는 직접하지않고 updatedUser을 새로 만드는 방법이있다.