コース一覧
    Node.jsバックエンド実践
    つくる:DB版fleama

    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版fleama

    新しいことは出てきません

    この回では、新しい知識は 1 つも出てきません。第6章で書いたものを 1 つにまとめて、fleama のデータ層をデータベースへ移し切ります。

    移行が終わって何が変わったか

    第2章のファイル版第6章のDB版
    1 件追加全件を読み書きINSERT 1 回
    絞り込み全件を読んで filterWHERE で必要な分だけ
    id の採番自分で最大値を計算AUTOINCREMENT に任せる
    途中で止まったとき壊れた状態が残るROLLBACK で戻せる

    最後の行が、このコースでいちばん大きい変化です。壊れた状態が残らないことを、仕組みとして保証できるようになりました。

    ルートの側は変わっていない

    第2章で分けておいたおかげで、変えたのはデータの出し入れだけです。GET /items が一覧を返すことも、無ければ 404 を返すことも、第4章で決めたまま変わっていません。

    外に見せる約束を変えずに、中身を入れ替えられる。 これが層を分ける目的でした。React 側から見れば、裏でデータベースに移ったことは分かりません。

    ここまでに手に入れたもの

    何をどのレッスンで
    つないで表を作るDBにつなぐ
    一覧と1件を読み分ける一覧・詳細をDB化
    安全に書き込む出品をDB化
    つなぐ危険を知るSQLインジェクション
    変更系と changes更新・削除をDB化
    全部か何もしないか購入トランザクション

    手を動かす

    演習では、第6章のすべてを備えた fleama API を組み立てます。購入までデータベースで動く形が完成します。

    要件

    1. POST /items は name が空なら 400、通れば INSERT して読み直した商品を 201 で返す
    2. POST /items/:id/buy は 商品が無ければ 404、売り切れなら 409 を返す
    3. 購入できるときは BEGIN から COMMIT までで売切れ化と購入記録を行い、{id, sold} を 200 で返す

    ヒント

    出品は「検証 → INSERT → 読み直して 201」の順です

    購入は先に商品を取り出して、404 と 409 を判定してから `BEGIN` に入ります

    `BEGIN` の中で失敗したら `ROLLBACK` を呼びます。何も起きていない状態に戻ります

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

    関連レッスン

    • 第6章クイズ

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

    • 購入トランザクション

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

    • 更新・削除をDB化

      編集と取下げをDB化し、変更系を移行できるようになります。

    • SQLインジェクション

      文字列連結の危険を再現してから直し、プレースホルダが必要な理由を説明できるようになります。

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

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

    • データベースデータを構造化して保存する仕組み
    • SQLデータベースを操作するための共通言語
    • トランザクション「全部成功 or 全部なかったことに」をまとめる単位
    • エンドポイント「この URL を叩くとこの機能が動く」入口の住所
    • APIアプリ間でデータをやり取りする窓口
    main.js
    エディタを読み込んでいます

    メモ

    つくる:DB版fleama

    ⌘S で保存