게시글
질문&답변
2024.07.30
find() 에서 password를 숨길때 사용하는 어노테이션 옵션 차이
저도 궁금해서 좀 테스트 해 보니까 이런 차이가 있네요 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 레벨에서 응답시 특정 필드를 무시하느냐 인듯 합니다.
- 0
- 2
- 260
질문&답변
2024.07.29
length에서 min값만 설정하고 싶을 때 max 없이 validationOptions을 어떻게 전달할 수 있나요..?
시간이 좀 지나서 이미 찾아서 사용중이실수도 있고 보실진 모르겠습니다만 경우에 따라서 @MinLength() 와 @MaxLength() 를 사용하실 수 있고, @Length(0, max값, {}) @Length(min값, Number.MAX_VALUE, {}) 등으로도 사용하실 수 있을 것 같습니다.
- 0
- 2
- 202