slice의 문제점
안녕하세요 선생님.
$slice 연산자를 사용하려고 구현해보니 몇가지 문제에 직면해서 조언을 얻고자 댓글을 남깁니다.
1. $slice:-10으로 설정 할 경우, database array field에 가장 최근 것이 배열의 마지막 인덱스에 저장되는데 이를 unshift처럼 배열의 첫번째 인덱스에 가장 최신의 것을 저장하면서 $slice -10을 동시에 적용은 안되나요?
왜냐하면 $slice:-10으로 설정 할 경우, 예를 들어 blog의 comment들을 최신순으로 정렬할 시, 첫 로딩시에는 front는 back에서 받은 data중 blog의 comment field를 역순으로 정렬을 구현할 것이고, pagenation을 할 시에는 sort({createdAt:-1})로 정렬을 했다면 정순으로 로직이 구현될텐데, 프론트에서 통일감있게 코드를 구현할 수 있게 하는게 맞는 방향인거 같아서요!
이에 대한 해결책은 back에서 sort({createdAt:1})를 하는 방법일까요?
2. $slice:-5로 설정하고 data를 삭제할 경우, 예를 들어 comment data는 총 10개가 있고(comment id는 1~10으로 가정) comment field에는 comment id가 6,7,8,9,10인 comment가 저장되있는데 여기서 comment id가 6인 data를 삭제한다면 comment field에는 comment id가 7,8,9,10인 data가 남게됩니다.
이렇게 된다면 blog 화면에 첫 로딩 시, 최신순 5개의 댓글을 불러오고 싶은데 blog의 comment filed에 4개밖에 없으므로 5개의 댓글을 못 불러오게 됩니다.
이에 대한 문제를 해결하기 위한 방법이 있을까요?
감사합니다!
답변 1
1
1. 음 정렬 방법에 따라 내장을 각각 해야되요.
근데 그럴 필요가 아마 없을거에요. 기본값으로 설정된 정렬방법으로만 내장을 해주면 될거 같아요.
이후에 사용자가 정렬 순서나 필터 같은걸 바꾼다면 그 조건에 맞게 comment를 불러오면 되요.
만약 모든 블로그의 기본 정렬을 설정페이지 같은 곳에서 설정 할 수 있게 해준다면 정렬 기준별로 내장하는게 좋을 수도 있어요.
2. https://docs.mongodb.com/manual/reference/operator/update/position/
이 부분 참고해서 하시면 될 것 같아요. 간단한 방법으로는 그냥 블로그 문서를 백엔드로 불러와서 배열을 수정 후 .save()하는 방법도 항상 있고요 :)
option usecreateindex is not supported 오류 나면은
0
161
1
Schemaless 특성을 재생시 검은화면이 나와요
0
258
1
user 내장 시 ref 필드 필요성
0
255
1
await 관련해서 질문드릴게 있습니다!!
0
306
2
섹션6의 3번째 강의 faker파일이 어디있나요?
0
320
1
$elemMatch 질문이 있습니다.
0
251
1
DB 업데이트에 실패했을 상황에서 대처는 어떻게 할 수 있나요.
2
777
2
블로그에 user 데이터를 추가하는 방법에 대해서
0
243
1
blog 데이터 생성시 user 관련 오류
0
363
1
age 예외 처리를 별도로 하신 이유가 궁금합니다.
2
312
2
delete 메소드가 많은 이유가 궁금합니다.
0
185
1
unique validation 처리
0
302
1
updateMany에서 user._id를 못찾는 상황
1
402
1
find() 가 리턴하는 instance member
1
438
3
몽고 db를 백업방법을 부탁합니다.
0
610
1
인덱스 생성시점
0
720
1
$pull 문법에 대한 질문
0
366
1
comment의 id가 생성되는 시점
1
310
1
리팩토링 강의에서 라우터 리팩토링 전개연산자(...)
1
320
1
session.abortTransaction()에 대한 실제 예시 문의
0
296
1
섹션9 Computed Fields 강의에서, 다음 강의 가기 전 빠진부분
-1
413
1
faker 패키지 취약성 이슈
1
495
1
라우터 리팩토링
0
348
1
섹션4 진행중, mongoose 질문
0
316
1





