Optimiser les transactions SQL dans l'API
P粉343408929
2023-08-18 13:24:59
<p>J'ai eu un entretien d'embauche récemment et j'ai reçu quelques devoirs. Ensuite, j'ai reçu un retour indiquant que j'avais une combinaison inutile de requêtes et de transactions dans mon point de terminaison de mise à jour. </p>
<pre class="brush:php;toolbar:false;">export const update = async (req : demande, res : réponse, suivant : NextFunction) =>
essayer {
const reportId = parseInt (req.params.id)
const { nom, âge, informations } = req.body
const rapport = attendre ReportModel.findOne ({
où: {
identifiant : identifiant du rapport
}
})
if (!report) return next(new EntityNotExistError("Le rapport n'existe pas"))
attendre ReportModel.update({
nom,
âge,
Info
}, {
où: {
identifiant : identifiant du rapport
}
})
const _report = attendre ReportModel.findOne ({
où: {
identifiant : identifiant du rapport
}
})
retourner res.json({
message : "Rapport modifié avec succès",
rapport : _rapport
})
} attraper (erreur) {
revenir ensuite (erreur)
}
}</pré>
<p>Comme vous pouvez le voir, la première requête vérifie si l'entité existe, puis j'effectue une mise à jour sur l'entité et la dernière requête renvoie l'entité mise à jour.
Existe-t-il un moyen d'optimiser la communication avec la base de données ? </p>
Votre code implique trois interactions différentes avec la base de données pour une seule opération de mise à jour :
ReportModel.findOne()
ReportModel.update()
ReportModel.findOne()
La réduction des requêtes de base de données fait le travail et améliore les performances.
**Votre code fixe :**