-
Notifications
You must be signed in to change notification settings - Fork 0
쪽지 기능을 위한 데이터 모델링 및 구현
Min-h-96 edited this page Dec 12, 2022
·
5 revisions
// 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 에 새로운 쪽지가 왔는지를 알려주기 위해서, 마지막 메시지가 보내진 시간과 비교하기 위한 데이터입니다.
- 📃 기획서
- 📂 Backlog
- 📊 ERD, 폴더 구조
- 🗓️ 회의록