API에서 SQL 트랜잭션 최적화
P粉343408929
2023-08-18 13:24:59
<p>최근에 취업 면접을 봤는데 약간의 숙제가 생겼습니다. 그런 다음 업데이트 엔드포인트에 불필요한 쿼리와 트랜잭션 조합이 있다는 피드백을 받았습니다. </p>
<pre class="brush:php;toolbar:false;">export const update = async (req: 요청, res: 응답, next: NextFunction) =>
노력하다 {
const reportId = parsInt(req.params.id)
const { 이름, 나이, 정보 } = req.body
const 보고서 = ReportModel.findOne({
어디: {
id: 보고서 ID
}
})
if (!report) return next(new EntityNotExistError("보고서가 존재하지 않습니다"))
ReportModel.update({
이름,
나이,
정보
}, {
어디: {
id: 보고서 ID
}
})
const _report = ReportModel.findOne({
어디: {
id: 보고서 ID
}
})
res.json({
메시지: "보고서가 성공적으로 편집되었습니다.",
보고: _report
})
} 잡기(오류) {
다음 반환(오류)
}
}</pre>
<p>보시다시피 첫 번째 쿼리에서는 항목이 존재하는지 확인한 다음 해당 항목에 대해 업데이트를 수행하고 마지막 쿼리에서는 업데이트된 항목을 반환합니다.
데이터베이스와의 통신을 최적화할 수 있는 방법이 있습니까? </p>
귀하의 코드에는 단일 업데이트 작업을 위해 데이터베이스와의 세 가지 상호 작용이 포함됩니다.
ReportModel.findOne()
ReportModel.update()
ReportModel.findOne()
데이터베이스 쿼리를 줄이면 작업이 완료되고 성능이 향상됩니다.
**귀하의 고정 코드:**