• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

DB에서 불필요한 데이터 제거하고 전송하기

22.07.03 22:44 작성 조회수 169

0

현재 프론트쪽으로 document의 모든 데이터( _id, createdAt, updatedAt, _v 포함)를 보내주는데,
보내주고 싶지 않은 데이터만 빼서 보내주려면 어떻게 해야하나요?
 
특히, user라는 document가 있을경우, 많은 필드 중에서
password 정보만 빼고 보내준다던가, 이런 경우요
 

답변 1

답변을 작성해보세요.

1

안녕하세요~

 

User.findOne({..}).select({_id: 1, createdAt: 1 }) 이런식으로 select를 하시면 됩니다.

 

저는 select를 자주 사용하지는 않아요. 관계형에서는 SELECT로 특정 컬럼만 선택을 하면 해당 컬럼만 하드디스크에서 디비 메모리로 불러와줘서 해주는게 좋은데요. 몽고는 문서 전체가 디비 서버 메모리로 불러와지고 나서 거기서 선택하지 않은 필드들을 제외해주는 작업을 해요. 그래서 저는 필요하다면 그냥 백엔드 서버에서 분리하는편이에요.

 

그리고 말씀하신 비밀번호에 대해서는 가져와도 보안상 문제는 특별히 없어요. 애초에 디비에 비밀번호를 그대로 저장 그대로 저장하는게 아니라 비밀번호의 해시값을 저장하기 때문이죠. 해시 값에서 비밀번호 복호화는 불가능해요

무자본님의 프로필

무자본

질문자

2022.07.04

엇 select 기능 알려주신것도 감사한데, 제 질문은 백엔드에서 DB 문서를 가져와서 불필요한 정보를 제거하는걸 묻는거였거든요.

한 문서 내에 많은 항목이 있는데, 한두개의 필드만 제거하고 전부 프론트쪽으로 보내고 싶은데, 이런 경우 어떤 방식으로 하는지 궁금해요

const document = await Model.find({...})

delete document.field 이런식으로 가능한건지. 아니면 그외 더 나은 방식이 있는건지...