작업 노트
게시판 시작해봅시다 -7 본문
이전 포스팅에서 코드가 좀 복잡했던 게시글 수정, 삭제 부분의 좀더 깔끔한 방법을 생각해 냈습니다!
우선 이전 코드입니다.
1. findById로 게시글을 찾습니다.
2. req.user._id.equals(post.author)로 로그인한 계정과 글 작성자를 비교합니다.
3. 일치하는 경우 findByIdAndUpdate/findByIdAndRemove 로 글을 수정, 삭제합니다.
DB를 두번 접근하기 때문에 에러확인도 두번들어갑니다.
아래는 수정한 버전입니다.
1.findOneAndUpdate/findOneAndRemove를 써서 게시글을 찾되, 검색 조건에 _id와 작성자를 동시에 검색합니다.
2.일치되면 수정, 삭제가 이루어 지고 일치하는 자료가 없으면 업다고 에러를 내게 됩니다.
DB접근을 한번만 하게 됩니다. 코드가 짧아지고 이해하기 쉬워졌습니다.
그리고 한가지 더 수정한 부분이 있습니다.
view에 post data를 넘겨줄때 썼던 data:post(s)를 post(s):post(s)로 수정했습니다.
사실 변수명은 의미가 명확한 것을 쓰는 것이 좋고, 두리뭉실한 이름은 피하는 것이 좋죠..
index 에서 data:posts가 posts:posts로 수정되었습니다.
show, edit 에서 data:post가 post:post로 수정되었습니다.
스크린샷은 없지만, view file에서 data라고 되어 있던 부분들도 해당 이름으로 변경했습니다.
index는 post의 array가 전달되므로 복수형으로 posts라고 썼고, show, edit에서는 하나의 post만 보여주기때문에 단수형으로 썼습니다.
이걸 구별하면 view에서 의미가 좀 더 정확해 지는데요, index의 view파일을 살펴보죠.
이전엔 29번째 줄이 data.forEach(function(e)였었죠. data의 element를 forEach한다는 뜻으로 정확히 무슨 데이터를 처리하는지 한눈에 알기가 힘듭니다.
data가 posts로 변경되었기 때문에 이 부분도 posts.forEach(post)로 수정되었습니다.
posts들의 각각 post에 대해 forEach를 한다는 것으로 이해하기가 더 쉬워졌습니다.
다음번 포스트에서는 진짜 refactor를 올리겠습니다.
github.com/imtaekh/my_app/tree/b38d7d835f1d8fef82873e798472ed1ddc626349 에서 코드를 보실 수 있습니다. git clone한 다음 git reset --hard b38d7d8 하시면 컴퓨터에서 코드를 보실 수 있습니다. |
'javascript > w3schools nodejs' 카테고리의 다른 글
게시판 시작해봅시다 -9 (0) | 2017.02.23 |
---|---|
게시판 시작해봅시다 -8 (0) | 2017.02.23 |
게시판 시작해봅시다 -6 (0) | 2017.02.23 |
게시판 시작해봅시다 -5 (0) | 2017.02.23 |
게시판 시작해봅시다 -4 (0) | 2017.02.23 |