find한 다음에 console.log로 데이터 출력할 때
Pretty()라는게 있는데 nodejs에서 find뒤에 사용하니
pretty() is not a function이라고 나옵니다.
이걸 사용해서 원하는 데이터만 보이도록 출려하고 싶은데 pretty말고 다른 방법있을까요?
아, ! 그리고 실제 업무에서 pretty()를 잘 사용하나요?
Answer 3
1
pretty는 shell(강의 초반에 mongoDB Compass에서 디비 명령어를 작성했던 곳)에서만 사용하는 명령어라서 실제 노드 코드상으로는 사용할 수가 없어요! 그래서 not a function이라는 오류가 나온거에요.
음 원하시는 용도는 mongoose의 select를 이용하시면 될 것 같아요. mongoDB 공식문서상으로는 projection이에요
const blog = await Blog.find({}).select('content createdAt') 이런식으로 하면 _id를 포함한 선택한 필드들(content, createdAt)만 디비에서 리턴이 되요. 관계형 데이터베이스에서의 SELECT content, createdAt FROM blogs와 비슷한 문법이죠. 근데 참고로 select를 해도 퍼포먼스에는 큰 영향이 없어요. 필드 단위로 저장되는게 아니라 문서 단위로 저장이 되기 때문이에요. 그래서 하나의 필드만 select 하셔도 몽고디비 서버에서는 문서 전체가 하드디스크에서 메모리상으로 읽어져요.
제가 select를 사용하는 경우는 API를 호출한 사용자의 권한에 따라 제한된 정보를 보여줘야할 때 사용해요. 그러면 애초에 디비에서 노드 서버로 넘어오지 않게 되죠. 대표적으로 비밀번호나 개인정보들이 있어요!
0
lean() 사용하셔도 괜찮아요
다만 lean()을 사용하게 되면 디비에서 받은 값이 mongoose Document형태가 아니라 mongoose가 추가해주는 함수들을 접근할 수 없게 되요. find한 결과를 바로 res.send()하는거면 lean을 써주셔도 되요.
그리고 lean()을 쓴다고 해서 속도가 빨라지지는 않을거에요. 다만 노드 서버에서 차지하게 되는 메모리양이 조금 줄어들어요.
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
310
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
361
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

