Skip to content

쪽지 기능을 위한 데이터 모델링 및 구현

Min-h-96 edited this page Dec 12, 2022 · 5 revisions

쪽지 기능을 구현하기 위한 ERD 를 기획합니다.

// message 쪽지 내역 (ex. A와 B의 채팅 내역 document)

{
  _id: ObjectId(),
  participants: 'ObjectId(A).toString(),ObjectId(B).toString()'
  contents: [
     {
       from: ObjectId(A).toString(),
       createdAt: Date
       content: '내용1',
     },
     {
       from: ObjectId(B).toString(),
       createdAt: Date
       content: '내용2',
     },
     {
       from: ObjectId(B).toString(),
       createdAt: Date
       content: '내용3',
     }
  ],
}
  • participants : 값이 저장되기 이전에 sort([A,B]) 과정을 거쳐서 정렬한 순서대로 문자열을 만들고, ,문자로 구분자를 추가해서 저장합니다.
  • time : 쪽지를 보내는 요청이 온 시간입니다.
// user 컬렉션에 추가되는 내용 (ex. userB)

{
  ... 생략 ..
  messageInfos: [
    {
      with: ObjectId(A).toString(),
      lastCheckTime : Date
    },
    {
      with: ObjectId(C).toString(),
      lastCheckTime : Date
    },
  ],
  lastPageConnectTime : Date
}
  • messageInfos : 사용자가 누구와 쪽지를 주고받고 있는지 내역을 구성하기 위한 데이터입니다.
  • lastMessageCheckTime
    • 각 쪽지 내역에 마지막으로 접속한 시간을 확인하여, 사용자마다 확인하지 않은 메시지가 있으면 시간을 비교해서 알려주기 위한 데이터입니다.
  • lastPageConnectTime
    • 쪽지 내역 페이지에 마지막으로 접속한 시간으로, 쪽지 내역 페이지가 unmount 되는 순간을 기준으로 합니다.(만약 불가능한 경우, mount 되는 순간을 기준으로 합니다.)
    • NavBar 에 새로운 쪽지가 왔는지를 알려주기 위해서, 마지막 메시지가 보내진 시간과 비교하기 위한 데이터입니다.

얼리버드

프로젝트

개발일지

스프린트 계획

멘토링

데일리 스크럼

데일리 개인 회고

위클리 그룹 회고

스터디

Clone this wiki locally