⚠️ 이 글에 틀린 정보가 숨어있을 확률이 높다..

 

 

무한 대댓글을 구현하는게 어렵다고 해서, 어떻게 구현할 수 있을까 생각을 해봤다.

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

https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEQW7z%2FbtqzLEptmPu%2Fl1eTk3YW6uk8YtgWb1C930%2Fimg.png

위 게시물의 그림을 보면서 도움 받았다.

솔직히 그림만 보고 텍스트는 읽지 않았다.

 

깊이 1의 유기적인 데이터들을 생각하다보니,

링크드 리스트 + 트리 느낌으로 구현할 수 있을 것 같았다.

 

Depth는, parent node의 depth에서 1을 더해주면 쉽게 구할 수 있다.

 

게시물부터 depth를 명시해줘서 (포스트는 안 해줘도 되고) 모든 comment는 자신의 parent node의 depth를 따라가면 될 것 같다.

프론트에선 백엔드에서 미리 계산해준 depth를 통해서 들여쓰기와 같은 방법으로 쉽게 무한 대댓글을 구현할 수 있다.

백엔드에서의 구현은 이 정도면 된다..

 

그럼 depth를 명시해주지 않으면 프론트에선 어떻게 해야할까?

+ Recent posts