編集機能

・編集画面のレイアウト

編集画面のレイアウトは、Resources/layout配下にあるedit.xmlファイルに定義されています。

【参照】https://gitlab.com/creationline/mongodb-realm-mobileapp/-/blob/Chapter8/SampleApp/Resources/layout/edit.xml

・編集フラグメント

プロジェクト直下のEditFragment.csは商品情報の編集と削除を行うためのコードです。

【参照】https://gitlab.com/creationline/mongodb-realm-mobileapp/-/blob/Chapter8/SampleApp/EditFragment.csl

・更新ボタンのクリックイベント

ApplyInventory関数では、まずFindメソッドを使用して編集する対象となるドキュメントのIdと一致するRealmObjectを取得しています。

Inventory inventory = publicRealm.Find<Inventory>(primaryKey:
    ObjectId.Parse(base.Arguments.GetString("mongo_id")));

次に、RealmObjectの内容を編集しています。

publicRealm.Write(() =>
{
    inventory.Item = itemText.Text;
    inventory.Price = price;
    inventory.DiscountRate = discount;
    inventory.Timestamp = DateTimeOffset.Now;
});

削除機能

削除機能はEditFragment.csで実装しています。また、レイアウトは編集画面と同じものを使用します。

・削除ボタンのクリックイベント

DeleteInventory関数では、Findメソッドで取得したRealmObjectをRemoveメソッドに渡すことでローカルのRealmデータベースからドキュメントを削除します。

Inventory inventory = publicRealm.Find<Inventory>(primaryKey:     
                                               ObjectId.Parse(base.Arguments.GetString("mongo_id")));

publicRealm.Write(() => publicRealm.Remove(inventory));

動作確認

まず、MainActivity.csにあるApp.Create関数の引数が個人のAPP-IDになっていることを確認してください。

realmApp = App.Create("sampleapp-xxxxx");

次に、Visual Studioのメニューバーから [デバッグ] - [デバッグの開始] をクリックするとAndroid Emulatorが起動します。管理者ユーザーでログインすると以下のようなトップ画面が表示されます。

始めに、追加機能を試してみます。トップ画面から [追加] ボタンをクリックすると以下の画面に遷移します。各項目に値を入力してみましょう。入力が終わったら [追加] ボタンをクリックします。

以下のようなポップアップが表示されるので [OK] をクリックします。

トップ画面に遷移するので、商品が追加されているのを確認します。

ここで、MongoDB Atlasとの同期についても確認してみましょう。MongoDB Cloudのポータルサイトから [Atlas] タブを開き、“CreationlineCluster”にある[Browse Collections] を開いてみましょう。[Collections] を開くと“todo”内に“Inventory”が作成されています。ここに、モバイルアプリから追加した商品情報が表示されていれば、同期に成功しています。

次に、編集機能を試してみます。先ほど追加した商品の欄をクリックすると、以下の画面に遷移します。今回は定価を変更してみます。入力が終わったら [更新] ボタンをクリックします。

以下のようなポップアップが表示されるので [OK] をクリックします。

トップ画面に遷移するので、商品の定価と最終更新日時が更新されているのを確認します。

MongoDB Atlasのドキュメントも更新できていれば成功です。

最後に、削除機能を試してみます。先ほどと同様に商品欄をクリックして編集画面に移動し、[削除] ボタンをクリックします。すると、以下のような削除確認用のポップアップが表示されるので [YES] ボタンをクリックします。

商品情報が正常に削除されると、以下のようなポップアップが表示されるので [OK] をクリックします。

トップ画面に遷移するので、商品が削除されているのを確認します。

MongoDB Atlasからもドキュメントが削除されていれば成功です。

おわりに

今回は、MongoDB Realmを使用してCRUD機能を実装し、実際にモバイルアプリケーションから商品情報の読み取り、追加、編集、削除を行う仕組みを紹介しました。

次回は、一般ユーザー(消費者)が、商品情報を参照できる機能を実装する予定です。お楽しみに!

この記事のキーワード :

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30