필터 계층을 활성화하려는 Dto가 있습니다. selectFields
메서드는 반환해야하는 필드 이름의 배열을 사용하고 다른 속성은 제거됩니다.
클래스의 속성을 열거하여 루프를 통해 필터링 된 것들을 null로 설정할 수있는 간단한 방법은 무엇입니까?
BaseDto에서 거짓 값을 치료합니다 (사실 저는 여기에도 같은 기능이 필요합니다).ES6 클래스의 필터 속성
class UserServiceDto extends BaseDto {
constructor(userDto) {
super();
this.fbUserId = userDto.fbUserId;
this.fbFirstName = userDto.fbFirstName;
this.fbLastName = userDto.fbLastName;
this.gender = userDto.gender;
this.birthdate = userDto.birthdate;
this.aboutMe = userDto.aboutMe;
this.deviceToken = userDto.deviceToken;
this.refreshToken = userDto.refreshToken;
this.updatedAt = userDto.updatedAt;
this.createdAt = userDto.createdAt;
}
selectFields(fields) {
// --> what's your take?
}
toJson() {
return super.toJson();
}
}
편집 :
는 서비스 계층은 모든 데이터베이스 필드를 포함 저장소 계층에서 DTO를받습니다. ServiceLayerDto는 웹 API에서 필요하지 않은 필드를 필터링하는 것을 목표로합니다 (보안 필드 (예 : PK 필드, isDeleted 등)로 노출되어서는 안됩니다). 웹 층 (컨트롤러)는 HTTP 클라이언트로 보내는 반환 값은 일반 JSON 객체가 될 것
return new UserServiceDto(userDto)
.selectFields('fbUserId', 'fbFirstName', 'fbLastName', 'birthdate', 'aboutMe', 'updatedAt', 'createdAt')
.toJson();
: 그래서 결과는 내가 좋아하는 뭔가를 보일 것에 대한 서비스 방법의 끝에서 찾고 있어요 것 .
'selectFields'와 예상되는 반환 값에 대한 호출의 예를 제공 할 수 있습니까? –
@ibrahimmahrir 유스 케이스를 추가했습니다. 당신이 이것을 잘 받아들이면 주저하지 마십시오. 감사합니다 – Trace
lodash의 ['pick'] (https://lodash.com/docs/4.17.4#pick) –