2023 ソフトウェア設計及び演習用の班Wiki

23::gr01::データベース(DB)モジュール

戻る

概要

データベースを操作・参照するモジュール群です。

  • database.js

    ※下記のモジュールにおいてデータベースを登録・参照しています。本来ならば独立したひとつのモジュールにするべきでしたが、最終発表までのあらゆるコストを鑑みてそのままにすることにしました。(2023/06/30時点)

  • main.js
  • setting.js
  • inputs.js
  • records.js
  • intake_cal.js
  • target_burned.js

利用したツール

Google Firebaseの Cloud Firestore機能
Google Firebaseは、モバイルアプリやWebアプリのためのバックエンドプラットフォームです。
Firebase Cloud Firestore はFirebase と Google Cloud からのモバイル、ウェブ、サーバー開発に対応した、柔軟でスケーラブルなデータベースです。Cloud Firestoreを使う利点を以下に挙げます。
  • 柔軟性
    Cloud Firestore データモデルは、柔軟な階層型データ構造に対応しています。データはドキュメントに格納され、ドキュメントはコレクションにまとめられます。ドキュメントには、サブコレクションの他に複雑なネスト オブジェクトを含めることができます。
  • 高機能なクエリ処理
    Cloud Firestore では、個別のドキュメントを取得する場合や、クエリ パラメータに一致するすべてのドキュメントをコレクションで取得する場合に、クエリを使用できます。クエリには複数の連鎖フィルタを使用でき、またフィルタ処理と並べ替え処理を組み合わせることができます。デフォルトではクエリにはインデックスが付いているので、クエリのパフォーマンスは、データセットではなく結果セットのサイズに比例します。
  • リアルタイムアップデート
    Realtime Database と同様に、Cloud Firestore はデータ同期を使用して、すべての接続端末のデータを更新します。ただし、シンプルな 1 回限りの取得クエリを効率的に実行するようにも設計されています。

ユーザ管理の実現方法

Firebase の CDN に保存されているfirestoreライブラリを追加し、各メソッドをインポートした
  • "https://www.gstatic.com/firebasejs/9.22.0/firebase-app.js"

インポートしたメソッドの説明

initializeApp
アプリで Firebase を初期化して、Firebase アプリ オブジェクトを作成します。Firebase アプリはコンテナに似たオブジェクトで、一般的な構成を保存し、Firebase サービス全体で認証を共有します。コードで Firebase アプリ オブジェクトを初期化すると、Firebase サービスを追加して使用できるようになります。
getFirestore
Cloud Firestore のインスタンスを初期化します。
doc
ドキュメントデータのインスタンスを作成します。Cぉud フィレsトレ のインスタンスへの参照(ref)を返す。
setDoc
単一のドキュメントを作成または上書きします。
Timestamp
firebase上のタイムスタンプ型のクラス(オブジェクト)です。now()メソッドで現時点の日付時刻データを返します
getDoc
データベースから最新のドキュメント スナップショットを取得します。
collection
コレクション内のすべてのドキュメントを取得する参照オブジェクトを返す。
getDocs
データベースから複数の最新のドキュメント スナップショットを取得します。

自作したメソッドの説明

get_data
ユーザーオブジェクトを渡し、そのユーザーの全活動記録をcollectionメソッドで参照し、getDocsメソッドでスナップショットを作成します。コレクションの各データのプロパティを読み出し、日付ごとにデータをまとめ、用意した配列に格納します。
get_records
onAuthStateChangedメソッドで観測したユーザーオブジェクトを受け取り、ユーザー認証が行われていればそのオブジェクトをget_dataオブジェクトに渡し、認証に失敗した場合はトップ画面に遷移します。


最終更新日:2023/06/30 17:40:40