slice 질문 드립니다,,
안녕하세요 선생님
저번에 남긴 질문에 대한 해답을 못 구해 질문을 남깁니다.
제가 원하는 설계는 예를 들어, 유저 model에서 유저가 남긴 댓글들을 저장하는 array field를 만들고 이를 nesting으로 최신순 10개를 저장하는 것입니다. 이는 pagenation의 개수를 10개로 하려고 하기 때문입니다.
그러면 유저의 마이페이지에서 유저가 남긴 댓글들을 보여주는 페이지에 들어간다면, 백엔드에서는 이에 관한 api의 로직을 유저 model을 한 번 호출하여 필요한 data를 프론트에 주도록 구현하였습니다.
이러한 상황에서, 유저가 총 20개의 댓글을 남겼고 유저가 "유저가 남긴 댓글들을 저장하는 array field"에 저장된 댓글을 삭제 할 경우, 위의 api대로 작동한다면 최신순 10개의 댓글을 줄 수 있음에도 불구하고 9개밖에 주지 못하는 상황이 발생합니다.
1) "유저가 남긴 댓글들을 저장하는 array field"의 개수를 삭제 연산이 진행되더라도 10개를 보장해주는 방법에 대해 감이 오질 않습니다..
2) 삭제연산을 할 경우 개수를 보장해주길 원한다면 로직이 너무 까다로워지는데 nesting으로 설계하는 것이 과연 옳은가? 라는 생각이 듭니다.
감사합니다..!
Answer 2
0
백엔드에서 불러와서 처리해야한다는게 다음과 같은 방법을 말한거였습니다!
이렇게 하는게 아무래도 데이터를 정규화시켜서 populate로 불러오는 방법보다는 어쩔 수 없이 복잡합니다. 트래픽이 많지 않은 초기 서비스이고 개발시간이 촉박하시다면 populate로 시작하는것도 좋아요. 느려질 기미가 보이기 시작할 때 디비 설계를 위와 같이 변경하면 되니깐요. 물론 여유가 되시고 연습삼아서 하시는거면 이렇게 미리 해보시는 것도 좋고요 ㅎㅎ
중요한 포인트는 이렇게 설계도 가능하다에요. 단순 작동하는 디비와 백엔드를 만드는건 쉬워요(주니어 레벨). 어려운건(시니어 레벨) 많은 부하가 발생했을 때 혹은 서비스가 복잡해졌을 때도 잘 작동하게 할 수 있느냐에요.
option usecreateindex is not supported 오류 나면은
0
147
1
Schemaless 특성을 재생시 검은화면이 나와요
0
241
1
user 내장 시 ref 필드 필요성
0
240
1
await 관련해서 질문드릴게 있습니다!!
0
293
2
섹션6의 3번째 강의 faker파일이 어디있나요?
0
309
1
$elemMatch 질문이 있습니다.
0
248
1
DB 업데이트에 실패했을 상황에서 대처는 어떻게 할 수 있나요.
2
767
2
블로그에 user 데이터를 추가하는 방법에 대해서
0
238
1
blog 데이터 생성시 user 관련 오류
0
352
1
age 예외 처리를 별도로 하신 이유가 궁금합니다.
2
302
2
delete 메소드가 많은 이유가 궁금합니다.
0
182
1
unique validation 처리
0
297
1
updateMany에서 user._id를 못찾는 상황
1
397
1
find() 가 리턴하는 instance member
1
432
3
몽고 db를 백업방법을 부탁합니다.
0
604
1
인덱스 생성시점
0
713
1
$pull 문법에 대한 질문
0
360
1
comment의 id가 생성되는 시점
1
303
1
리팩토링 강의에서 라우터 리팩토링 전개연산자(...)
1
316
1
session.abortTransaction()에 대한 실제 예시 문의
0
289
1
섹션9 Computed Fields 강의에서, 다음 강의 가기 전 빠진부분
-1
411
1
faker 패키지 취약성 이슈
1
488
1
라우터 리팩토링
0
345
1
섹션4 진행중, mongoose 질문
0
312
1

