
【Node.js】ExpressでMongoDBのデータを編集する
前回は、Express で MongoDB のデータを削除しました。

【Node.js】ExpressでMongoDBのデータを削除する
今回は、Express で MongoDB のデータを編集します。
コードは、前回のコードを使用します。
views/index.ejs
views/menu.ejs
views/menu-detail.ejs
views/menu-edit.ejs
index.js
models/menu.js
controllers/menus.js
routes/index.js
routes/menu.js
utils/database.js
データを編集画面に表示する
まずは、編集をクリックすると、編集画面へ遷移するように修正します。
controllers フォルダの menus.js を開きます。
getEditMenuの中身を削除します。
getMenuの中身をコピーして、getEditMenuの中に貼り付けます。
menu-detailをmenu-editへ、『詳細画面』を『メニュー内容編集』へ修正します。
編集コントローラーが完成したので、動作確認をやってみます。
『エビフライ定食』の編集をクリックします。
エビフライ定食の編集画面へ遷移しました。
メニュー内容を更新する
次に、『メニューを更新する』ボタンをクリックすると、メニュー内容が更新される様にします。
models フォルダの menu.js を開きます。
Menu クラスにupdateMenuを作成します。
データを更新するするために、idとtitle、descriptionを渡す様にします。
deleteMenuの内容をupdateMenuに貼り付けます。
MongoDB を更新するときは、updateOneを使用します。
titleとdescriptionを更新したい場合、$setを使います。
$setは、指定された値を持つフィールドの値を置き換えます。
以下のコードは、不要になったので削除します。
編集モデルが完成したので、次はコントローラーを編集します。
controllers フォルダの menus.js を開きます。
postEditMenuのupdatedMenuを削除します。
Menu クラスのupdateMenuを接続します。
更新内容は、id、updateTitle、updateDescriptionを指定します。
try、catchでエラーを取得する様にします。
編集コントローラーが完成しました。
最後に、編集画面の id を修正します。
views フォルダの menu-edit.ejs を開きます。
menu.idを、menu._idへ修正します。
お知らせ

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