1. 로그아웃 기능
2. 회원정보 수정 예외처리
3. 코드들 성능개선 및 예외처리, routes 폴더에 파일 세분화하기
로그아웃을 하는 기능이 필요할것 같아서 만들어 봤습니다.
비 로그인 상태일 때는 nav의 탭에 로그인이
로그인 상태일 때는 nav의 탭이 로그아웃으로 변하면 좋아 보입니다.
ejs 파일이라 if 문을 이용하면 쉽게 구현 가능할것 같네요
nav를 include 형식으로 불러오므로, ejs 파일에서 여기서 userId를 사용하려면 nav를 사용하는 모든 ejs 파일에
req.session.userId를 보내줘야 하는데
그냥 사용하기 편하게 미들웨어 이용해서 사용하려면
이제 로그아웃 기능을 살펴보면, 로그아웃 버튼을 눌렀을때 /logout 으로 get 요청을 보내고
server.js에서 처리하면 될것 같습니다.
이때 destroy((err)=>{}) 함수를 사용하면 session을 파괴할수 있습니다.
근데 앞에 if문으로 뭘 써뒀죠?
req.session.userId 가 존재할 경우만 로그아웃을 수행하도록 간단한 예외처리를 해뒀습니다.
이러면 직접 로그아웃 하는 경우만 로그아웃이 될 것 같네요.
로그아웃 기능은 구현 끝입니다.
회원정보 수정할때 다른사람이 수정하지 못하고, 현재 로그인 해있는 사람만 수정 가능하도록 하면 좋을것 같네요.
이렇게 하면 될것 같은데
각 필드를 만약에 비운 상태로 업데이트 할 경우를 대비해야 할것 같은데요
if 문을 써서 세분화 해주면 좋을것 같습니다.
이렇게 필드에 값이 채워져 있으면, 수정하기 버튼을 클릭했을때 req.body.name 에 필드 값이 들어오고
필드값이 존재할경우, updateDate= {} 변수에 추가해주고
updateOne() 함수를 사용해서 db에 저장된 값을 수정해주면 되겠네요.
잘 동작하네요.
이제
3. 코드들 성능개선 및 예외처리, routes 폴더에 파일 세분화하기 할 차례입니다.
먼저 파일을 분류하자면
1. 게시판 기능 관련
2. 회원 기능 관련
3. 프로필 관련
이렇게 크게 3개로 분류해주면, 기능별로 깔끔하게 정리될것 같습니다.
posts.js, users.js, profile.js 이렇게 3개로 분류해주고
기능을 만드면서 사용했던 require, app.use 들 추가해주고
module.exports = function(db){
return router;
}
각 모듈에서 이렇게 export 해주면
server.js 에서 app.use(require('./routes/posts')(db)); 이런식으로 코드 등록해주면 된다고 하네요.
routes 하는 방법 몰라서 gpt 한테 물어봤습니다.
1. 기능을 분류한다
2. 모듈화해서 export 한다
3. server.js 에 가져와서 사용한다
주요사항은 function(db) { return router; } 형태를 사용하는 이유는
데이터베이스 연결을 라우트 모듈과 공유하기 위해서 그렇다고 합니다.
posts.js
users.js
profile.js
server.js
이렇게 간략하게 코드를 세분화 했습니다.
이제 기능 새로운 기능 만들때면, routes 파일에 새로 파일 하나 만들어서 세분화 시켜두면
코드 유지 보수성 측면에서 도움이 될것 같네요
앞으로는 이런식으로 개발해 보겠습니다. 한가지 배웠네요
오늘 포스팅은 여기까지하고, 다음 포스팅은 게시글에 작성 가능한 댓글 기능을 개발해 보도록 하겠습니다.
'블로그 express + mongodb 로 만들기' 카테고리의 다른 글
블로그 만들기(10) - 댓글 기능 (1) | 2023.12.27 |
---|---|
블로그 만들기(중간점검) - (gif 파일로 몰아보기) (2) | 2023.12.26 |
블로그 만들기(8) - 프로필 페이지 만들기 (1) | 2023.12.25 |
블로그 만들기(7) - 회원 기능 예외 사항 서버에서 검증하기 (1) | 2023.12.24 |
블로그 만들기(6) - 회원 기능 만들기 (1) | 2023.12.23 |