ホームページ  >  に質問  >  本文

API での SQL トランザクションの最適化

<p>最近就職面接があり、少し宿題をもらいました。その後、更新エンドポイントにクエリとトランザクションの不必要な組み合わせがあるというフィードバックを受け取りました。 </p> <pre class="brush:php;toolbar:false;">export const update = async (req: リクエスト、res: レスポンス、next: NextFunction) => { 試す { const reportId = parseInt(req.params.id) const {名前、年齢、情報} = req.body const report = await ReportModel.findOne({ どこ: { id: レポートID } }) if (!report) return next(new EntityNotExistError("レポートが存在しません")) ReportModel.update を待ちます({ 名前、 年、 情報 }、{ どこ: { id: レポートID } }) const _report = await ReportModel.findOne({ どこ: { id: レポートID } }) res.json({ メッセージ: 「レポートは正常に編集されました」、 レポート: _レポート }) } キャッチ (エラー) { 次へ戻る(エラー) } }</pre> <p>ご覧のとおり、最初のクエリはエンティティが存在するかどうかを確認し、次にエンティティの更新を実行し、最後のクエリは更新されたエンティティを返します。 データベースとの通信を最適化する方法はありますか? </p>
P粉343408929P粉343408929407日前427

全員に返信(1)返信します

  • P粉201448898

    P粉2014488982023-08-19 10:18:35

    コードには、1 つの更新操作に対してデータベースとの 3 つの異なる対話が含まれています。

      エンティティが存在するかどうかを確認する | コード:
    1. ReportModel.findOne()
    2. エンティティの更新 | コード:
    3. ReportModel.update()
    4. 応答で返す更新されたエンティティを取得する | コード:
    5. ReportModel.findOne()
    データベース クエリを減らすと、作業が完了し、パフォーマンスが向上します。

    **修正コード:**

    リーリー

    返事
    0
  • キャンセル返事