Одна вещь, которую вы можете сделать, это динамически добавить атрибут where
к запросу, например, так:
async findAll(uid: number): Promise<User[]> {
const usersQuery = this.userRepository.createQueryBuilder('u')
.leftJoinAndSelect('u.userRole', 'userRole')
.leftJoinAndSelect('userRole.role', 'role')
.leftJoinAndSelect('u.userAccess', 'userAccess')
.leftJoinAndMapOne('u.profile', UserProfile, 'userProfile', 'userProfile.user_id=u.id');
if (uid) {
usersQuery.where('u.id = :id', {id: uid});
}
return usersQuery.getMany();
}
Теперь, если uid
передается функции findAll
, условие where
будет установлен, в противном случае без указания where
запрос получит всех пользователей. Кроме того, теперь вы можете просто вернуть запрос с .getMany()
, и node
даст await
результат для вас, чтобы вы вернули обещание.