⚠️ 이 글에 틀린 정보가 숨어있을 확률이 높다..
무한 대댓글을 구현하는게 어렵다고 해서, 어떻게 구현할 수 있을까 생각을 해봤다.
express + Mongo db 의 입장에서만 생각해봤다!!
일단 이런 방식의 계속해서 깊어지는 댓글을 구현하는 방법을 중심으로 떠올려봤다.
각 깊이별로 차례차례 생각해보았다.
진짜 이 순서대로 생각해본 거다!
Depth 0
post에 직접적으로 달리는 comment는 post._id 를 통해서 삽입이 된다.
post._id를 통해서 기본적인 대댓글 없는 댓글은 구현이 가능하다. (나도 방금 해봤다.)
Depth 1
그러면 댓글에 댓글을 다는, 대댓글은 어떻게 해야할까?
comment._id를 통해서 커멘트에 커멘트를 다는 방식으로 구현하면 될 것 같았다.
child comment 배열을 통해서 해당 댓글에 달린 대댓글을 전부 추적할 수 있다.
Depth 무제한
https://granora2019.tistory.com/entry/NodeJS와-MongoDB로-SNS-만들어보기-userment-댓글대댓글-라우터
NodeJS와 MongoDB로 SNS 만들어보기 - user_ment (댓글/대댓글 라우터)
2019/11/14 - [띡딱똑띡 개발자 Hanna] - NodeJS와 MongoDB로 SNS 만들어보기 - user_postingPlus (게시글 라우터2) NodeJS와 MongoDB로 SNS 만들어보기 - user_postingPlus (게시글 라우터2) 2019/11/14 - [띡딱똑띡 개발자 Hanna]
granora2019.tistory.com
위 게시물의 그림을 보면서 도움 받았다.
솔직히 그림만 보고 텍스트는 읽지 않았다.
깊이 1의 유기적인 데이터들을 생각하다보니,
링크드 리스트 + 트리 느낌으로 구현할 수 있을 것 같았다.
Depth는, parent node의 depth에서 1을 더해주면 쉽게 구할 수 있다.
게시물부터 depth를 명시해줘서 (포스트는 안 해줘도 되고) 모든 comment는 자신의 parent node의 depth를 따라가면 될 것 같다.
프론트에선 백엔드에서 미리 계산해준 depth를 통해서 들여쓰기와 같은 방법으로 쉽게 무한 대댓글을 구현할 수 있다.
백엔드에서의 구현은 이 정도면 된다..
그럼 depth를 명시해주지 않으면 프론트에선 어떻게 해야할까?
'백엔드' 카테고리의 다른 글
무한 대댓글 실제로 구현해보기 O(N^2) (0) | 2023.08.06 |
---|---|
Redis O(N) 문제와 대응: SCAN 명령어로 효율적으로 데이터 조회하기 (0) | 2023.07.27 |
return function과 콜백 이해하기 (0) | 2023.07.23 |
jsonwebtoken의 jwt.sign(), jwt.vertify()에서 콜백 사용이 필요할까? (0) | 2023.07.23 |
JWT에서 Bearer는 무엇을 의미할까? (0) | 2023.07.20 |