본문 바로가기
띡딱똑띡 개발자 Hanna

NodeJS와 MongoDB로 SNS 만들어보기 - user_profile (프로필 라우터)

by HannaDev 2019. 11. 14.

2019/11/14 - [띡딱똑띡 개발자 Hanna] - NodeJS와 MongoDB로 SNS 만들어보기 - user_passport (로그인 라우터)

 

NodeJS와 MongoDB로 SNS 만들어보기 - user_passport (로그인 라우터)

저번 포스트에서는 전체적인 폴더 구조를 설명했고 이번 포스트에서는 현재까지 구현된 router의 전체 목록을 설명하고자 합니다. > user_passport.js user_passport.js 파일에는 '로그인'과 관련된 라우터들이..

granora2019.tistory.com

ㄴ 이전 글

 

 

 


 

routes 폴더 구조


 

 

* 현재까지 설명한 router => 7번 (user_passport)

 

* 현재 설명하고자 하는 router => 10번 (user_profile)

 

 

 

> user_profile

 

user_profile.js 파일의 라우터 전체 목록

 

user_profile.js는 프로필관련 라우터들을 정의한 파일입니다.

 

기획 상 회원가입을 '아이디 입력 (중복체크 필요)' => '닉네임 입력' + '이메일 광고 수신 동의 여부 선택'

=> '약관 동의 후 시작' 순으로 진행하기로 했기 때문에 이에 맞게 /SignUp 라우터는 바꾸어야합니다.

 

또한 프로필 디자인이 어떻게 나오냐에 따라 디테일을 바꿔야할 것입니다.

 

1, 2번 라우터를 보면 동일한 프로필 수정 라우터지만,

post 파라미터로 image값이 오냐에 따라 나누었습니다.

 

현재 'multer-storage-cloudinary' 라는 모듈을 통해 파일을 처리하고

있기때문에 이미지 처리가 필요한 경우가 필요하지 않은 경우로 나눠 처리하고 있습니다.

(Cloudinary 함수 관련해서는 라우터 목록 설명 후 따로 포스팅을 하겠습니다.)

 

 

 

> function_profile

 

function_profile.js 파일의 함수 목록

 

function_profile.js는 user_profile.js에서 프로필 관련 처리 시 필요한 함수들을 정의한 파일입니다.

 

 

function_profile.js 일부 (enum 선언 및 exprots 통한 모듈화)

UPDATETYPE (enum) 변수는 updateUser 함수 (프로필 수정 함수)에서 활용됩니다.

1. 회원가입인 경우 : UPDATETYPE.Create

2. 프로필 수정인 경우 (프로필 이미지 수정 X) : UPDATETYPE.Update

3. 프로필 수정인 경우 + 기본 이미지로 되돌아간 경우: UPDATETYPE.UpdateBasic

4. 알림 수정인 경우 : UPDATETYPE.Notice

5. 프로필 수정인 경우 (프로필 이미지 수정 O) : UPDATETYPE.ProfileImg

6. 단순 기본 프로필 이미지 설정인 경우 : UPDATETYPE.BasicImg

 

굳이 enum을 사용하지 않아도 되지만 코드 가독성 + 헷갈리지 않고 관리하고자 enum을 활용했습니다.

 

해당 function_profile.js 파일 속 함수들을 user_profile.js 파일에서

사용하고자 하는 경우에는 다음과 같이 사용하면 됩니다.

// 파일 불러오기
var profileAPI = require('./functions/function_profile');

// profileAPI 변수접근을 통해 함수 사용
profileAPI.getUserData(...);
profileAPI.checkUserName(...);

// UPDATETYPE (enum) 값은 getType() 함수를 통해 접근
profileAPI.updateUser(database, profileAPI.getType().ProfileImg, paramID, paramUser, function(...) {});

 

 

* Router 상세 정보 *

더보기

POST     /modifyUserPlus

* 프로필 수정 (프로필 이미지 수정하는 경우)

 

>> 필요 파라미터 <<

{

  name: 사용자 아이디로 설정할 값 (String),

  ㄴ 아이디 중복 시 에러 처리로 넘어갑니다!

  ㄴ 아이디는 [ 숫자 영어 . _ ] 만 허용됩니다.

  ㄴ 길이는 2자~30자여야 합니다.

  nickname: 사용자 닉네임으로 설정할 값 (String)

  ㄴ 닉네임은 [ 숫자 영어 한글 _ ] 만 허용됩니다.

  ㄴ 길이는 1자~20자여야 합니다.

  info: 사용자 프로필 소개글로 설정할 값 (String)

  ㄴ 길이는 0자~100자여야 합니다.

  photo: 사용자 프로필 이미지로 설정할 파일 ( - )

  ㄴ 한 장 보내주세요!

  ㄴ 서버에서 처리 시 자동으로 100x100으로 잘라 저장합니다.

}

 

 

> 에러 발생 시

{

  isProfileImg: false (boolean),

  errorMsg: 에러 메세지 (String)

}

 

> 정상 작동 시

{

  isProfileImg: true

}

 

 

 

 

 

POST    /modifyUser

* 프로필 수정 (프로필 이미지 수정 X or 기본 프로필 이미지로 설정 시)

 

>> 필요 파라미터 <<

{

  name: 사용자 아이디로 설정할 값 (String),

  ㄴ 아이디 중복 시 에러 처리로 넘어갑니다!

  ㄴ 아이디는 [ 숫자 영어 . _ ] 만 허용됩니다.

  ㄴ 길이는 2자~30자여야 합니다.

  nickname: 사용자 닉네임으로 설정할 값 (String)

  ㄴ 닉네임은 [ 숫자 영어 한글 _ ] 만 허용됩니다.

  ㄴ 길이는 1자~20자여야 합니다.

  info: 사용자 프로필 소개글로 설정할 값 (String)

  ㄴ 길이는 0자~100자여야 합니다.

  isBasicImg: 사용자 프로필 이미지를 기본 프로필 이미지로 설정할 지 여부 (boolean)

  ㄴ true면 기본 프로필 이미지로 설정합니다.

}

 

 

> 에러 발생 시

{

  isUpdateUser: false (boolean),

  errorMsg: 에러 메세지 (String)

}

 

> 정상 작동 시

{

  isUpdateUser: true

}

 

 

 

 

 

POST     /modifyNotice

* 알림설정, 이메일 수신 동의 여부 수정

 

>> 필요 파라미터 <<

{

  pushNotice: 푸쉬 알림 설정 여부, 1이면 설정 상태 (int),

  emailNotice: 이메일 수신 동의 여부, 1이면 설정 상태 (int)

}

 

> 에러 발생 시

{

  isModifyNotice: false (boolean),

  errorMsg: 에러 메세지 (String)

}

 

> 정상 작동 시

{

  isModifyNotice: true (boolean)

}

 

 

 

 

 

GET     /checkUserName/:name

* name에 해당하는 값으로 아이디(userName) 중복 체크

 

> 에러 발생 시

{

  isCheck: false (boolean),

  errorMsg: 에러 메세지 (String)

}

 

> 정상 작동 시

{

  isCheck: false (boolean),

  isExist: 존재 여부, true면 중복되는 아이디 (boolean)

}

 

 

 

 

 

POST     /SignUp

* 회원가입

>> 수정 중입니다. (11/14 미완)

 

ㄴ 프론트(Flutter)를 위한 라우터 상세 정보 입니다.

 

 

 

 

 

 

 

 

 

 

댓글