Skip to content

Commit 81c97cd

Browse files
committed
fix: QueryBuilder를 사용하여 userService fineOne 쿼리 최적화
1 parent 3c7ed0a commit 81c97cd

File tree

2 files changed

+18
-16
lines changed

2 files changed

+18
-16
lines changed

src/api/public/users/middlewares/current-user.middleware.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,20 @@ export class CurrentUserMiddleware implements NestMiddleware {
1616
constructor(private usersService: UsersService) {}
1717

1818
async use(req: Request, res: Response, next: NextFunction) {
19-
// 헬스체크 경로인 경우 미들웨어 로직 건너뛰기
20-
if (req.baseUrl === '/api/node/health') {
19+
const userId = req.headers['x-user-id'] || req.body?.userRequest?.user?.id;
20+
21+
if (!userId) {
2122
return next();
2223
}
2324

24-
const userId = req.headers['x-user-id'] || req.body?.userRequest?.user?.id;
25-
const user = await this.usersService.findOne(userId);
26-
if (user) {
27-
req.currentUser = user;
28-
} else {
25+
try {
26+
const user = await this.usersService.findOne(userId);
27+
req.currentUser = user || {
28+
id: userId,
29+
campus: null,
30+
department: null,
31+
};
32+
} catch (error) {
2933
req.currentUser = {
3034
id: userId,
3135
campus: null,

src/type-orm/entities/users/users.repository.ts

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,12 @@ export class UsersRepository {
2323
}
2424

2525
findOne(userId: string): Promise<User> {
26-
return this.usersRepository.findOne({
27-
where: { id: userId },
28-
relations: {
29-
campus: true,
30-
department: {
31-
college: true,
32-
},
33-
},
34-
});
26+
return this.usersRepository
27+
.createQueryBuilder('user')
28+
.leftJoinAndSelect('user.campus', 'campus')
29+
.leftJoinAndSelect('user.department', 'department')
30+
.leftJoinAndSelect('department.college', 'college')
31+
.where('user.id = :userId', { userId })
32+
.getOne();
3533
}
3634
}

0 commit comments

Comments
 (0)