Optimieren Sie SQL-Transaktionen in der API
P粉343408929
2023-08-18 13:24:59
<p>Ich hatte kürzlich ein Vorstellungsgespräch und habe ein paar Hausaufgaben bekommen. Dann erhielt ich die Rückmeldung, dass mein Update-Endpunkt eine unnötige Kombination aus Abfragen und Transaktionen enthielt. </p>
<pre class="brush:php;toolbar:false;">export const update = async (req: Request, res: Response, next: NextFunction) =>
versuchen {
const reportId = parseInt(req.params.id)
const { Name, Alter, Info } = req.body
const report = waiting ReportModel.findOne({
Wo: {
id: reportId
}
})
if (!report) return next(new EntityNotExistError("Bericht existiert nicht"))
warte auf ReportModel.update({
Name,
Alter,
die Info
}, {
Wo: {
id: reportId
}
})
const _report = waiting ReportModel.findOne({
Wo: {
id: reportId
}
})
return res.json({
Meldung: „Bericht erfolgreich bearbeitet“,
Bericht: _report
})
} Catch (Fehler) {
return next(error)
}
}</pre>
<p>Wie Sie sehen können, prüft die erste Abfrage, ob die Entität existiert, dann führe ich eine Aktualisierung der Entität durch und die letzte Abfrage gibt die aktualisierte Entität zurück.
Gibt es eine Möglichkeit, die Kommunikation mit der Datenbank zu optimieren? </p>
您的代码涉及到对数据库的三个不同交互,用于单个更新操作:
ReportModel.findOne()
ReportModel.update()
ReportModel.findOne()
减少数据库查询可以完成任务并提高性能。
**您修复后的代码:**