web-dev-qa-db-ja.com

Flutter Appのオフラインデータをオンラインデータベースと同期させる方法

アプリがオンラインになるときにデータベース(電話でローカルに)データを格納するToDoアプリがあると言ってください.MongoDBまたはFirestore.Iを参照してください。完全な上書きをしたくないまたは毎回新しいテーブルの作成、私はデータベースへの変更を更新するためだけに効率的なソリューションを探しています。

13
maheshmnj

すでに指摘されているように、これは建築の問題であり、おそらく単純な答えはないでしょう。これが2つの主な考えです:

シナリオA :トランザクションデータを更新するだけで、順序は関係ありません。モバイル出席アプリ。日付タイムスタンプと共にユーザーの場所がサーバーに記録されています。そしてサーバーは他のすべてをします(検証、処理、報告)。

シナリオB:シーケンスは問題になります。オフラインの接続性を保つだけでは、古いデータは次のようなシナリオのように新しいデータを上書きすることがあります。ユーザーには2つのデバイスがあります。新しいデータを持つデバイスがオンラインでオンラインになり、古いデータを持つデバイスが続きます。

両方のシナリオやシナリオBの両方に対処しています。

  1. 「キュー」テーブルを作成しました。
  2. すべてのエントリが最初にキューに送信されます(オンラインまたはオフライン)
  3. キューエントリの挿入はFireBase Cloud関数をトリガーします。この関数は検証と処理を行います(以下の例)。
  4. この関数は実際のテーブルのエントリを作ります。

ステップ3は、TODOなどのアプリを操作するときに特に役立ちます。これは、イベントをログに記録したいと思うかもしれず、古いデータが後で来るとToDo項目のステータスをUDPATEにしないかもしれません。

1
Sukhi