반응형
핵심 정리
- DB에는 sender/receiver 모두 ObjectId만 저장 (name 저장 X)
- API 응답에서는 sender: {_id, name} 형태로만 내려줌
- 프론트에서는 sender._id로 데이터 처리, sender.name은 화면 출력만
- 음성/텍스트 메시지 모두 text/audioUrl 중 하나만 있어도 OK, 둘 다 없으면 생성 불가
- 불필요한 name/id 혼용, name 저장/전달 모두 제거
주요 변경 내역
- inbox.ts:
- sender는 항상
로 내려주고,{ _id, name }
- text, audioUrl도 안전하게 처리
- sender는 항상
- page.tsx:
- VoiceMessage 타입 통일
- sender._id는 데이터 처리, sender.name은 화면 출력만
- 답장/메시지 전송 시 receiver로 ObjectId만 사용
앞으로의 유지보수/확장에도 안전
- ObjectId만 DB에 저장하므로,
사용자 정보(닉네임 등) 변경 시에도 메시지 시스템은 안전하게 동작 - 프론트/백엔드 모두 혼동 없이 구조가 명확
추가로 점검하거나,
이 구조를 기반으로 새로운 기능(예: 메시지 검색, 신고, 차단 등)
추가하고 싶으시면 언제든 말씀해 주세요!
이제 메시지 시스템은 가장 안전하고 표준적인 구조로 동작합니다.
반응형