
【Node.js】Expressで、JSONデータを削除する方法
前回は、Express と JSON データを使って、一覧画面から詳細画面に遷移する方法を紹介しました。

【Node.js】ExpressとJSONデータを使って、一覧画面から詳細画面に遷移する方法
今回は、JSON データを削除する方法を紹介します。
コードは、前回のコードを使用します。
views/index.ejs
views/menu.ejs
views/menu-detail.ejs
index.js
models/menu.js
controllers/menus.js
routes/index.js
routes/menu.js
削除ボタンを作成
index.ejs に削除ボタンを作成します。
JSON データの削除を処理するために、delete-menu へ遷移するようにします。
削除する際メニューの ID が必要になるので、削除ボタンを押したら、value に EJS でメニュー ID を設定します。
また、input タグの中身が見えないように、type="hidden"にしておきます。
削除モデルを作成
models フォルダの menu.js にある Menu クラスに、deleteMenuを作成します。
前回作成した、fetchMenuの内容をdeleteMenuにコピーしましょう。
今回はfindではなく、削除したい ID に当てはまらない JSON データを取得するために、filterを使います。
削除したい ID がmenu.idなので、『!==』で削除したい ID 以外を取得します。
menuDetailの名前もupdatedMenusにしておきましょう。
updatedMenusの一覧を JSON ファイルに書き込みます。
これで、モデルの作成は、一通り完了しました。
削除コントローラを作成
削除ボタンを押した時に処理するためのコントローラを作成します。
名前は、postDeleteMenuにします。
メニュー ID を取得し、Menu クラスのdeleteMenuへ渡します。
処理後は、ホーム画面に戻るよう、リダイレクトします。
routes フォルダの menu.js にルート設定します。
index.ejs の削除ボタンで設定した URL と、postDeleteMenuのコントローラを指定しましょう。
一通り設定が完了しましたので、ブラウザで確認します。
メニュー追加は、うまく機能しています。
では、『野菜炒め定食』の削除ボタンを押してみます。
『野菜炒め定食』を削除することができました。
お知らせ

私事ですが、Udemyで初心者を対象にしたReactの動画コースを作成しました。
Reactについて興味がありましたら、ぜひ下のリンクからアクセスしてください。
詳しくはこちら(Udemyの外部サイトへ遷移します)