작성
·
1.1K
답변 2
1
0
답변 정말 감사합니다. 관련 힌트를 주셔서 작성을 해보았는데도 작동이 잘 되지 않고 구글링에도 쉽지가 않네요.. 혹시 이유를 알 수 있을까요? findBy로 사용하면 쉽게 true로 나오는데 queryBuilder는 0 또는 1만 계속 나오네요..
//--- transformer
import { ValueTransformer } from 'typeorm';
function isNullOrUndefined<T>(
obj: T | null | undefined,
): obj is null | undefined {
return typeof obj === 'undefined' || obj === null;
}
export class BooleanTransformer implements ValueTransformer {
public from(value?: number | null): boolean | undefined {
if (isNullOrUndefined(value)) {
return;
}
return value ? true : false;
}
public to(value?: boolean | null): number | undefined {
if (isNullOrUndefined(value)) {
return;
}
return value ? 1 : 0;
}
}
//--- entity
@Column('tinyint', {
name: 'is_use',
nullable: true,
comment: '사용 여부',
width: 1,
transformer: new BooleanTransformer(),
})
isUse: boolean | null;
// ---service
async selectUserForTest(): Promise<
Pick<TbUserEntity, 'username' | 'isUse'>[]
> {
const user = await this.userRepository
.createQueryBuilder()
.select('username')
.addSelect('is_use')
.getRawMany();
return user;
}
강사님 정말 답변해주셔서 감사합니다.
getRawMany와 getMany를 찾아보니 data를 불러올 때는 getMany를 사용할 수 없는 것으로 검색되었습니다. (getMany 사용시 user에는 빈배열이 나오네요)
그렇다면 getRawMany로 사용해야 된다고 보면 되는데 json 주고 받을때 boolean 형식을 일반적으로 0 또는 1로 처리하는게 맞을까요?
데이터 불러올 때 getMany 당연히 됩니다.
this.userRepository.createQueryBuilder('user').select(['username, 'isUse']).getMany() 해보세요.
아.. getRawMany 하셔서 그런 것 같습니다. 그냥 getMany 하셔야 변환이 돌아갑니다.