コース一覧
    Node.jsバックエンド実践
    更新・削除をDB化

    Node.jsバックエンド実践

    入力検証、ミドルウェア、エラー処理、データベース接続を学び、実用的なバックエンドAPIを安全に組み立てられるようにします。

    1
    リクエスト処理と検証
    01. クエリパラメータ15分
    02. 並び替えとページング15分
    03. 入力検証15分
    04. ミドルウェア15分
    05. エラーハンドリング15分
    06. つくる:検索API完成20分
    07. 第5章クイズ10分
    2
    データベース接続
    01. DBにつなぐ15分
    02. 一覧・詳細をDB化15分
    03. 出品をDB化15分
    04. SQLインジェクション20分
    05. 更新・削除をDB化15分
    06. 購入トランザクション20分
    07. つくる:DB版fleama20分
    08. 第6章クイズ10分

    更新・削除をDB化

    変更系も run で行う

    更新も削除も、書き込みなので run を使います。

    JavaScript

    db.prepare("UPDATE items SET name = ?, price = ? WHERE id = ?").run(name, price, id);
    db.prepare("DELETE FROM items WHERE id = ?").run(id);

    プレースホルダは並んだ順に埋まります。WHERE に入る id も値なので、こちらも ? です。外から来た値は全部 ? に渡す、と覚えてください。

    WHERE を書き忘れると全件が変わる

    もっとも怖い書き間違いがこれです。

    SQL クエリ

    UPDATE items SET sold = 1;   -- 全商品が売り切れになる
    DELETE FROM items;           -- 全商品が消える

    どちらもエラーになりません。そう書いたのだから、そのとおり実行されます。変更系を書いたら、WHERE があるかを必ず見てください。

    何件変わったかで判断する

    第4章では、更新の前に find で対象を探して 404 を判定していました。データベースなら、実行の結果から分かります。

    JavaScript

    const result = db.prepare("UPDATE items SET name = ? WHERE id = ?").run(name, id);
    
    if (result.changes === 0) {
      return res.status(404).json({ error: "商品が見つかりません" });
    }

    changes に、実際に変わった行数が返ります。0 なら、その id の商品が無かったということです。探してから更新する 2 往復が、1 回で済みます。

    削除も同じです。changes が 0 なら 404 を返します。

    更新したものを返す

    更新の応答には、更新後の内容を返します。run は行そのものを返さないので、読み直します。

    JavaScript

    const updated = db.prepare("SELECT id, name, price FROM items WHERE id = ?").get(id);
    res.json(updated);

    削除は 204 なので、本文はありません。読み直す必要もありません。

    手を動かす

    演習では、更新と削除をデータベースに置き換えます。changes で 404 を見分けてください。

    要件

    1. PUT /items/:id は UPDATE して、更新後の {id, name, price} を返す
    2. DELETE /items/:id は DELETE して 204 を本文なしで返す
    3. どちらも changes が 0 なら 404 で {"error":"商品が見つかりません"} を返す

    ヒント

    `WHERE id = ?` を必ず書きます。忘れると全件が変わります

    `run(...)` の戻り値の `changes` が 0 なら、その id は無かったということです

    更新後の内容は `run` では返らないので、`SELECT` で読み直します

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/08/10

    関連レッスン

    • 購入トランザクション

      売切れ化と購入記録を不可分にし、複数の更新を一括で処理できるようになります。

    • つくる:DB版fleama

      全APIをDBで動かし、データ層を丸ごと移行できるようになります。

    • 第6章クイズ

      データベース接続とトランザクションの理解を4択で確認します。

    このレッスンに出てくる用語

    意味があいまいなまま進んだ語は、ここから読み直せます。

    • プレースホルダSQL の `?` 部分にあとから値を入れる仕組み
    • 判断YES/NO 分岐を表す菱形
    • データベースデータを構造化して保存する仕組み
    main.js
    エディタを読み込んでいます

    メモ

    更新・削除をDB化

    ⌘S で保存