P粉2014488982023-08-19 10:18:35
您的程式碼涉及到對資料庫的三個不同交互,用於單一更新操作:
ReportModel.findOne()
ReportModel.update()
ReportModel.findOne()
減少資料庫查詢可以完成任務並提高效能。
**您修復後的程式碼:**
export const update = async(req: Request, res: Response, next: NextFunction) => { try { const reportId = parseInt(req.params.id); const { name, age, info } = req.body; // 执行更新并获取受影响的行数 const [numberOfAffectedRows] = await ReportModel.update({ name, age, info }, { where: { id: reportId }, // 此标志检查更新函数是否返回更新后的对象 returning: true }); // 检查实体是否被找到和更新 if (numberOfAffectedRows === 0) { return next(new EntityNotExistError("报告不存在")); } // 获取更新后的报告 const updatedReport = await ReportModel.findOne({ where: { id: reportId } }); return res.json({ message: "报告已成功编辑", report: updatedReport }); } catch (error) { return next(error); } }