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

NodeJS와 MongoDB로 SNS 만들어보기 - 데이터 스키마 구조

by HannaDev 2019. 11. 10.

현재 MongoDB (NoSql)를 사용하고 있지만

Mongoose를 활용해 데이터 스키마를 정의해

데이터를 생성하고 접근하고 있습니다.

 

 

 

다음은 SNS 기능 구현을 위해 현재까지 작성한 데이터 스키마들과

데이터 스키마들 간의 관계를 표현한 것입니다.

 

이미지는 Cloudinary (클라우드 기반 이미지 및 비디오 관리 서비스 제공)를

활용하고 있기 때문에 cloudUrl과 imageId값을 저장해 관리합니다.

 

나중에 이미지 저장을 다른 웹 클라우드 서버를 활용하게 된다면

NodeJS 코드랑 데이터 스키마가 해당 서버 사용에 맞게 바뀌어야 할 것입니다.

 


UserScheme : 유저들의 정보를 담는 스키마

PostSchem : 게시글 정보를 담는 스키마

UpmentSchema : 댓글 정보를 담는 스키마

DownmentSchema : 대댓글 정보를 담는 스키마

RemovedPostSchema : 삭제된 게시글 정보를 담는 스키마 (관리자 분석용)

ClipPostSchema : 게시글 북마크 정보를 담는 스키마 (누가 어느 게시글을 북마크 했는지)

LikePostSchema : 게시글 좋아요 정보를 담는 스키마 (누가 어느 게시글에 좋아요를 눌렀는지)

LikeUpmentSchema : 댓글 좋아요 정보를 담는 스키마

LikeDownmentSchema : 대댓글 좋아요 정보를 담는 스키마

UserFollowSchema : 유저간 Follow 관계 정보를 담는 스키마


 

 

 

현재 Text에 한해서 게시글 생성, 수정, 삭제를 만들어 놓은 상태로

이미지 및 영상 첨부는 연결해놓지 않아서 연결해보고 결과에 따라

PostSchema (게시글 스키마) 에서 images [ ], video는 나중에 수정될 수 있습니다.

 

 

그리고 tag 부분은 기획이 확정되지 않아서 지금은 String 리스트로 냅뒀는데

기획이 확정되면 그거에 따라서도 바꿔야 할 것 같습니다.

 


11/15 (금) UserFollowSchema 에 created_at (Date) 가 추가되었습니다.

ㄴ 팔로잉, 팔로워 목록을 팔로우 한 시점 기준 최신순으로 정렬하기 위해

 

11/15 (금) UserSchema 에 token (String) 이 추가되었습니다.

ㄴ 프론트와 로그인 연동 시 token이 기준이 되기 때문에


 

 

mongoose schema 구조.pdf
0.18MB

(코드 읽으실 때 이거 보시면 도움 될 것 같아서 그려봤어요 ㅇㅁㅇ!)

 

 

 

 

router 관련 필요 파라미터, 결과값 구조들 정리는 다음에 할게요....

오늘은 여기까지...

댓글