Skip to content

Commit a96d382

Browse files
authored
Bug/issue 537 (#538)
* Use async-await instead of chaining, Add type declarations * Fix issue by adding 'raw: true, nest: true' options
1 parent adf7633 commit a96d382

File tree

2 files changed

+69
-62
lines changed

2 files changed

+69
-62
lines changed

src/controllers/Perfume.ts

+23-26
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,11 @@ const LikePerfume: LikePerfumeService = new LikePerfumeService();
9393
* description: Perfume not found
9494
* x-swagger-router-controller: Perfume
9595
* */
96-
const getPerfume: RequestHandler = (
96+
const getPerfume: RequestHandler = async (
9797
req: Request | any,
9898
res: Response,
9999
next: NextFunction
100-
): any => {
100+
) => {
101101
const perfumeIdx: number = req.params['perfumeIdx'];
102102
if (isNaN(perfumeIdx)) {
103103
next();
@@ -109,30 +109,27 @@ const getPerfume: RequestHandler = (
109109
req.params
110110
)})`
111111
);
112-
Promise.all([
113-
Perfume.getPerfumeById(perfumeIdx, loginUserIdx),
114-
SearchHistory.recordInquire(
115-
loginUserIdx,
116-
perfumeIdx,
117-
'' /* 향후 경로가 다양화 되면 경로 기록 용 */
118-
),
119-
])
120-
.then(([result, _]: [PerfumeIntegralDTO, void]) => {
121-
return PerfumeDetailResponse.createByPerfumeIntegralDTO(result);
122-
})
123-
.then((response: PerfumeDetailResponse) => {
124-
LoggerHelper.logTruncated(
125-
logger.debug,
126-
`${LOG_TAG} getPerfume's result = ${response}`
127-
);
128-
res.status(StatusCode.OK).json(
129-
new ResponseDTO<PerfumeDetailResponse>(
130-
MSG_GET_PERFUME_DETAIL_SUCCESS,
131-
response
132-
)
133-
);
134-
})
135-
.catch((err: Error) => next(err));
112+
113+
try {
114+
const [result, _]: [PerfumeIntegralDTO, void] = await Promise.all([
115+
Perfume.getPerfumeById(perfumeIdx, loginUserIdx),
116+
SearchHistory.recordInquire(
117+
loginUserIdx,
118+
perfumeIdx,
119+
'' /* 향후 경로가 다양화 되면 경로 기록 용 */
120+
),
121+
]);
122+
const response: PerfumeDetailResponse =
123+
PerfumeDetailResponse.createByPerfumeIntegralDTO(result);
124+
res.status(StatusCode.OK).json(
125+
new ResponseDTO<PerfumeDetailResponse>(
126+
MSG_GET_PERFUME_DETAIL_SUCCESS,
127+
response
128+
)
129+
);
130+
} catch (err) {
131+
next(err);
132+
}
136133
};
137134

138135
/**

src/dao/PerfumeDao.ts

+46-36
Original file line numberDiff line numberDiff line change
@@ -188,43 +188,51 @@ class PerfumeDao {
188188
logger.debug(
189189
`${LOG_TAG} recentSearchPerfumeList(userIdx = ${userIdx}, pagingDTO = ${pagingDTO})`
190190
);
191-
return InquireHistory.findAndCountAll(
192-
_.merge({}, pagingDTO.sequelizeOption(), {
193-
attributes: {
194-
include: [
195-
[
196-
Sequelize.fn(
197-
'max',
198-
Sequelize.col('InquireHistory.created_at')
199-
),
200-
'inquireAt',
201-
],
202-
],
203-
},
204-
where: {
205-
userIdx,
206-
},
207-
include: [
208-
{
209-
model: Perfume,
210-
as: 'Perfume',
211-
required: true,
191+
try {
192+
const result: {
193+
rows: InquireHistory[];
194+
// todo: count에 배열이 아닌 number이 오게끔 수정
195+
count: { perfume_idx: number; count: number }[];
196+
} = (await InquireHistory.findAndCountAll(
197+
_.merge({}, pagingDTO.sequelizeOption(), {
198+
raw: true,
199+
nest: true,
200+
attributes: {
212201
include: [
213-
{
214-
model: Brand,
215-
as: 'Brand',
216-
required: true,
217-
},
202+
[
203+
Sequelize.fn(
204+
'max',
205+
Sequelize.col('InquireHistory.created_at')
206+
),
207+
'inquireAt',
208+
],
218209
],
219-
raw: true,
220-
nest: true,
221210
},
222-
],
223-
order: [[sequelize.col('inquireAt'), 'desc']],
224-
group: ['InquireHistory.perfume_idx'],
225-
})
226-
).then((it: any) => {
227-
const rows: PerfumeInquireHistoryDTO[] = it.rows
211+
where: {
212+
userIdx,
213+
},
214+
include: [
215+
{
216+
model: Perfume,
217+
as: 'Perfume',
218+
required: true,
219+
include: [
220+
{
221+
model: Brand,
222+
as: 'Brand',
223+
required: true,
224+
},
225+
],
226+
raw: true,
227+
nest: true,
228+
},
229+
],
230+
order: [[sequelize.col('inquireAt'), 'desc']],
231+
group: ['InquireHistory.perfume_idx'],
232+
})
233+
)) as any;
234+
235+
const rows: PerfumeInquireHistoryDTO[] = result.rows
228236
.map((json: any) => {
229237
return {
230238
perfumeIdx: json.Perfume.perfumeIdx,
@@ -243,8 +251,10 @@ class PerfumeDao {
243251
};
244252
})
245253
.map(PerfumeInquireHistoryDTO.createByJson);
246-
return new ListAndCountDTO(it.count.length, rows);
247-
});
254+
return new ListAndCountDTO(result.count.length as number, rows);
255+
} catch (err) {
256+
throw err;
257+
}
248258
}
249259

250260
/**

0 commit comments

Comments
 (0)