Node.js 게시판 만들기 [2]

YulHee Kim·2021년 1월 29일
0

node-board

목록 보기
2/4
post-thumbnail

💻 Node.js와 MongoDB를 이용하여 게시판 만들기

강의 자료 출처 : https://www.a-mean-blog.com/ko/blog

🛠 front-end 코드

Public/js/script.js파일은 node.js 서버에서 사용하는 코드가 아니고, client의 브라우저에서 사용하게 될 JavaScript입니다. 그래서 public폴더에 들어있으며, head.ejs파일에 이 파일을 불러오는 코드가 작성됩니다.

script.js에선 convertDate함수, convertDateTime함수 등이 있습니다. html element중에 data-date의 2020-01-28T20:08:24.586Z 이런 형태를 년-월-일 형태로 formatting합니다.

🛠 ejs 코드



1. data-date가 element에 사용되었습니다. public/js/script.js에 의해 년-월-일의 형태로 출력됩니다.


🛠 회원가입 코드

User model

  1. schema: required[true, 에러메세지]입니다. 이처럼 배열을 사용하면 에러메세지 내용을 원하는 대로 변경할 수 있습니다.
    password에는 select:false를 추가하여 DB에서 해당 모델을 읽어올 때 이 패스워드부분은 읽어오지 않습니다
  2. DB에 저장되는 값 이외의 항목이 필요할 땐 virtual 항목으로 만듭니다. passwordConfirmation, originalPassword, currentPassword, newPassword는 회원가입, 회원정보 수정을 위해 필요한 항목이지만, DB에 저장할 필요는 없는 값들입니다. 이처럼 DB에 저장될 필요는 없지만, model에서 사용하고 싶은 항목들은 virtual로 만듭니다.
  3. password를 DB에 생성, 수정하기 전에 값이 유효한지 확인하는 코드를 작성합니다.
    model.isNew 항목은 해당 모델이 생성되는 경우에는 true, 아니면 false의 값을 가집니다. 이 항목을 이용해서 현재 password validation이 '회원가입' 단계인지, 아니면 '회원 정보 수정'단계인지를 알 수 있습니다.

route


2-1 findOneAndUpdate함수대신에 findOne함수로 값을 찾은 후에 값을 수정하고 user.save함수로 값을 저장합니다.(user.password를 조건에 맞게 바꿔주어야 하기 때문)
2-2 select함수를 이용하면 DB에서 어떤 항목을 선택할지, 안할지를 정할 수 있습니다. password를 읽어오지 않게 설정했으니, select('password')를 통해서 password를 읽어오게 했습니다. 참고로 -를 앞에 붙이면 읽어오던 것을 안 읽어오게 할 수도 있습니다.

마지막으로 users route를 index.js에 추가해 줍니다.

profile
백엔드 개발자

0개의 댓글