find() 에서 password를 숨길때 사용하는 어노테이션 옵션 차이
385
작성한 질문수 32
안녕하세요.
아래 두가지 어노테이션 차이가 궁금합니다.
@Column({select: false})
password@Exclude()
password차이가 뭔가요?
둘중 어느것을 써도 find() 에서 password 를 숨겨지는거같은데
용도 차이가 궁금합니다.
답변 2
0
저도 궁금해서 좀 테스트 해 보니까 이런 차이가 있네요
Column({select: false}) 인 경우는
애초에 ORM에서 select쿼리를 만들 때 컬럼에 포함시키지 않습니다.즉 위처럼 선언한 후 find() 하는 경우 조회된 UserModel 에서 password 필드는 완전히 비어 있습니다.
비지니스 로직에서 usermodel.password 로 사용할 수 없겠죠
@Exclude() 를 사용하는 경우는 DB에서 select는 해오지만, 외부로 전달하는 json이 만들어질때 해당 필드가 제외(exclude) 되는것 같습니다.
아마 ClassSerializerInterceptor 가 해당 오브젝트를 json 으로 만드는 순간 개입하여 Exclude() 된 필드를 제외하는것 같습니다.
비지니스 로직에서 usermodel.password 를 사용하는경우 실제 DB에서 조회된 값이 존재합니다.
디버그 모드로 보면서 테스트 해 보니 요런 차이가 있는것 같네요
정리하면
ORM 레벨에서 select를 막느냐 (결과적으로 app 에서 전달할 값도 없게 됨)
app 레벨에서 응답시 특정 필드를 무시하느냐
인듯 합니다.
cascade 질문
0
40
1
@types/bcrypt 설치과정이 누락된것같습니다.
0
49
1
process.env port key 에러
0
47
1
추상화
0
50
1
[공유] DTO optional 필드가 undefined로 잡혀 TypeORM 조건이 깨지는 현상
0
101
2
where 키워드가 들어가는 메서드와 아닌 메서드
0
57
1
BearerTokenGuard에서 db를 조회해서 유저 정보를 불러오는 이유?
0
72
1
app.controller app.service 는 지워도되나요?
0
70
1
@JoinColumn을 쓰는 경우와 안쓰는 경우의 차이
0
79
1
포트 3000에서 listen하는 곳까지 넘어가지 않습니다.
0
68
1
PickType 사용 시 `as const`를 꼭 사용해야 하나요?
0
102
2
socket connect 오류
0
98
2
강의를 들으면서 궁금한 점
0
97
2
DELETE 요청의 반환값은 어떤 기준으로 결정하는 게 좋을까요?
0
60
2
커리큘럼 질문
0
100
2
put 요청은 언제
0
90
3
typeorm VS prisma
0
351
2
142 강의 > 4:00 > 포스트멘 활용 관련 질문 드립니다.
0
78
2
User 데코레이터 버그 수정 전달드립니다.
0
67
1
git 주소 부탁드립니다.
0
113
2
nest g resource 명령어 에러
0
99
2
로그인 엔드포인트 관련 질문
0
85
2
yarn으로 express 다운 후 node 2_server.js 실행 안되는 경우
0
148
3
"흔히 사용되는 메서드" 강의 관련 질문입니다~
0
95
2





