優化API中的SQL事務
P粉343408929
2023-08-18 13:24:59
<p>最近我參加了一次工作面試,然後我得到了一點作業。然後我收到了回饋,說我的更新端點中有不必要的查詢和事務組合。 </p>
<pre class="brush:php;toolbar:false;">export const update = async (req: Request, res: Response, next: NextFunction) => {
try {
const reportId = parseInt(req.params.id)
const { name, age, info } = req.body
const report = await ReportModel.findOne({
where: {
id: reportId
}
})
if (!report) return next(new EntityNotExistError("報告不存在"))
await ReportModel.update({
name,
age,
info
}, {
where: {
id: reportId
}
})
const _report = await ReportModel.findOne({
where: {
id: reportId
}
})
return res.json({
message: "報告編輯成功",
report: _report
})
} catch (error) {
return next(error)
}
}</pre>
<p>如你所看到的,第一個查詢檢查實體是否存在,然後我會對實體進行更新,最後一個查詢會傳回更新後的實體。
有沒有一些方法可以優化與資料庫的通訊? </p>
您的程式碼涉及到對資料庫的三個不同交互,用於單一更新操作:
ReportModel.findOne()
ReportModel.update()
ReportModel.findOne()
減少資料庫查詢可以完成任務並提高效能。
**您修復後的程式碼:**