더북(TheBook)

회원가입을 할 때 중복되는 계정이 생성되지 않도록 기존에 해당 username이 존재하는지 확인했습니다. 이 작업은 findByUsername 스태틱 메서드를 사용해 처리했습니다. 그리고 비밀번호를 설정하는 과정에서는 setPassword 인스턴스 함수를 사용했습니다.

이렇게 스태틱 또는 인스턴스 함수에서 해야 하는 작업들은 이 API 함수 내부에서 직접 구현해도 상관없지만, 이렇게 메서드들을 만들어서 사용하면 가독성도 좋고 추후 유지 보수를 할 때도 도움이 됩니다.

함수의 마지막 부분에서는 hashedPassword 필드가 응답되지 않도록 데이터를 JSON으로 변환한 후 delete를 통해 해당 필드를 지워 주었는데요. 앞으로 비슷한 작업을 자주 하게 될 것입니다. 따라서 이 작업을 serialize라는 인스턴스 함수로 따로 만들어 주겠습니다.

다음 인스턴스 메서드를 user.js 모델 파일에 넣어 주세요.

src/models/user.js - serialize

UserSchema.methods.serialize = function() {
  const data = this.toJSON();
  delete data.hashedPassword;
  return data;
};

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.