Realm ~ App .同期

Atlas App Services を操作するためのクラス。

関連クラス

AsyncOpenTask
AuthError
BaseSubscriptionSet
IncompatibleSyncedRealmError
MutableSubscriptionSet
セッション
サブスクリプション
SubscriptionSet
ユーザー ID
Realm.App.Sync.SubscriptionsState
静的readOnly

Realm.App.Sync.SubscriptionSetセットの状態を表す列挙型。

タイプ:
"pending" または"complete"または"error"または"superseded"
プロパティ:
  • 支払い待ち
    • タイプ: "pending""complete""error" 、または"superseded"
    • デフォルト: pending
    • サブスクリプションの更新はローカルに保存されていますが、サーバーはまだ更新されたサブスクライブ クエリに一致するすべてのデータを返していません。

  • 完全
    • タイプ: "pending""complete""error" 、または"superseded"
    • デフォルト: complete
    • サーバーはサブスクライブを確認し、SubscriptionSet が更新されたときにサブスクライブ クエリに一致するすべてのデータを送信しました。 サーバーは定常状態の同期モードになり、更新が順次ストリーミングされるようになりました。

  • エラー
    • タイプ: "pending""complete""error" 、または"superseded"
    • デフォルト: error
    • サーバーはエラーを返し、この Realm の同期は一時停止されます。 実際のエラーを表示するには、 Subscriptions.errorを使用します。

      引き続きRealm.App.Sync.SubscriptionSet#updateを使用してサブスクライブを更新できます。新しい更新によってエラーがtriggerしない場合は、同期が再開されます。

  • 上書き
    • タイプ: "pending""complete""error" 、または"superseded"
    • デフォルト: superseded
    • SubscriptionSet は更新されたものによって上書きされています。 これは通常、 Subscriptionsの別のインスタンスでRealm.App.Sync.SubscriptionSet#updateを呼び出したことを意味します。 スーパーシードされた SubscriptionSet は使用せず、代わりにRealm.subscriptionsから新しいインスタンスを取得する必要があります。

Realm.App.Sync._hasExistingSessionsアプリ
静的

Realm が同期セッションの状態に関係なく同期セッションを参照している場合は、 trueを返します。 falseが返された場合、現在セッションが存在しないことを意味します。

パラメーター:
  • アプリ 任意
    • タイプ: Realm.App
    • Realm が開かれたアプリ。

Realm.App.Sync.enableSession Multipressing(アプリ)
静的

Realm アプリの 1 つの接続を介して複数の同期セッションの重複を有効にします。 同期された Realm が多数開いていると、サーバーへのすべてのソケットが開いているため、システムのファイル記述子が不足する可能性があります。 セッションの複数使用はそれを軽減するために設計されていますが、 フェイルオーバー が設定されたサーバーでは動作しない可能性があります。 ファイル記述子の制限に達したに関するエラーが表示され、かつ多くの同期セッションを使用していることがわかっている場合にのみ を使用してください。

パラメーター:
  • アプリ
Realm.App.Sync.getAllSyncSessions(ユーザー)[Realm.App.Sync.Session, ...]
静的

ユーザーのすべての同期セッションを返します。

パラメーター:
返します: [Realm.App.Sync.Session, ...]セッションの配列
Realm.App.Sync.getSyncSession(ユーザー、パーティション値)Realm.App.Sync.Session
静的

ユーザーとパーティション値に関連付けられたセッションを返します。

パラメーター:
  • partitionValue
    • タイプ: stringnumberObjectId 、またはnull
返します: Realm.App.Sync.Sessionセッション
Realm.App.Sync.initiateClientResetapppath
静的非推奨

クライアント リセットを開始します。 リセットする前に、Realm を閉じる必要があります。

Atlas Device Sync Server との通信で通常の同期の継続を妨げる回復不能なエラーが示されている場合は、同期された Realm をリセットする必要がある場合があります。 その最も一般的な理由は、クライアントが長時間切断されていた場合です。

Realm のローカルコピーは、保管のためにリカバリ ディレクトリに移動されます。

Atlas に正常に同期されなかったローカル書き込みは、Realm ファイルのローカル リカバリ コピーに含まれます。 再ダウンロードされた Realm には、最初は Realm がサーバー上で同期されていた時点で存在するデータのみが含まれます。

パラメーター:
  • アプリ 任意
    • タイプ: Realm.App
    • Realm が開かれたアプリ。

  • path 任意
    • タイプ: string
    • リセットする Realm へのパス。 リセットが不可能な場合は、エラーがスローされます。

:
{
  // Once you have opened your Realm, you will have to keep a reference to it.
  // In the error handler, this reference is called `realm`
  const config = {
    // schema, etc.
    sync: {
      user,
      partitionValue,
      error: (session, error) => {
        if (error.name === 'ClientReset') {
          let path = realm.path; // realm.path will no be accessible after realm.close()
          realm.close();
          Realm.App.Sync.initiateClientReset(app, path);
          // - open Realm at `error.config.path` (oldRealm)
          // - open Realm with `config` (newRealm)
          // - copy required objects from oldRealm to newRealm
          // - close both Realms
        }
      }
    }
  };
}
Realm.App.Sync.reconnect(アプリ)
静的

このメソッドを呼び出すと、Realm は Realm App をサーバーにすぐに再接続しようとします。

Realm は自動的に再接続されますが、指数バックオフが使用されます。 つまり、デバイスが長時間オフラインの場合、オンラインに戻った後に接続を復元するには、予想よりも時間がかかる可能性があります。 ネットワーク状態を検出できる状況(例: プレーン モード)。 このメソッドを手動で呼び出すと、ユーザー エクスペリエンスが向上します。

パラメーター:
  • アプリ
Realm.App.Sync.setLogger(アプリ、ロガー)
静的

同期クライアントのログを取得します。 ログ レベルは 1 回のみ設定でき、アプリ インスタンスを作成した後、Realm を開く前に行う必要があります。

詳細: {Realm.App.Sync_setLogLevel}
パラメーター:
  • アプリ
  • logger
    • タイプ: logCallback
    • ログのコールバック。

:
{
const app = new Realm.App(getAppConfig());
Realm.App.Sync.setLogger(app, (level, message) => console.log(`[${level}] ${message}`));
const user = await app.logIn(credentials);
const realm = await Realm.open(getRealmConfig(user));
}
Realm.App.Sync.setLogLevel(アプリ、レベル)
静的

同期ログ レベル を設定する。 ログ レベルは 1 回のみ設定でき、アプリ インスタンスを作成した後、Realm を開く前に行う必要があります。

パラメーター:
  • アプリ
  • レベル
    • タイプ: LogLevel
    • 新しいログレベル。

:
{
const app = new Realm.App(getAppConfig());
Realm.App.Sync.setLogLevel(app, "all");
const user = await app.logIn(credentials);
const realm = await Realm.open(getRealmConfig(user));
}
Realm.App.Sync.setUserAgent(アプリ、ユーザーエージェント)
静的

stringRealmセッションが作成されるときに オブジェクト サーバーに送信されるユーザーエージェント のアプリケーション部分を設定します。

このメソッドは、最初の Realm が開かれるまでのみ呼び出すことができます。 その後は、ユーザーエージェントは変更できなくなります。

パラメーター:
  • アプリ
  • userAgent
    • タイプ: string
    • ユーザーエージェントの説明

ClientResetConfiguration

これでは、クライアント リセットを構成するオプションについて説明します。

タイプ:
Object
プロパティ:
  • モード
    • タイプ: string
    • 「マニュアル」(非推奨、 Realm.App.Sync.initiateClientReset()も参照)、"discardUnsynced Changes" (サーバーから新しいコピーをダウンロード)、"recoverUnsyncedchanges" (リモートとローカルの同期されていない変更をマージし、同期されていない変更をマージ)、または "recoverOrDiscardUnsynced Changes" (から新しいコピーをダウンロード)のいずれかを実行します。同期されていない変更を回復できない場合は、サーバー)

  • onBefore 任意
    • タイプ: callback(realm)またはnull
    • 同期がクライアントのリセットを開始する前に呼び出されます("discardUnsyncedchanges"、"recoverUnsyncedchanges"、または "recoverOrDiscardUnsyncedchanges" モードのみ)。

  • onAfter 任意
    • タイプ: callback(beforeRealm, afterRealm)またはnull
    • クライアント リセットが実行された後に呼び出されます。 beforeRealmafterRealmは、クライアントリセットの前後で Realm のインスタンスです("discardUnsyncedchanges"、"reoverUnsyncedchanges"、または "recoverOrDiscardUnsyncedchanges" モードのみ)。

  • onFallback 任意
    • タイプ: callback(session, path)またはnull
    • リカバリまたは破棄に失敗した場合に呼び出されます("recoverUnsyncedchanges" または "recoverOrDiscardUnsyncedchanges" モードのみ)。

  • on Manual 任意
    • タイプ: callback(session, path)またはnull
    • 手動クライアント リセットを実行します - Realm.App.Sync.initiateClientReset()も参照してください(「手動」モードのみ)。

ダウンロードBeforeOpen動作

同期された Realm を開く前に、ダウンロードが完了するまで待機する場合のデフォルトの動作設定。

InitialSubscriptionsConfiguration

Realm を開くときに使用する柔軟な同期サブスクリプションの初期セットの設定を構成するための任意のオブジェクト。 これが指定されている場合、このサブスクリプションのセットがサーバーと完全に同期されるまで、 Realm.openは解決されません。

例:

const config: Realm.Configuration = {
  sync: {
    user,
    flexible: true,
    initialSubscriptions: {
      update: (subs, realm) => {
        subs.add(realm.objects('Task'));
      },
      rerunOnOpen: true,
    },
  },
  // ... rest of config ...
};
const realm = await Realm.open(config);

// At this point, the Realm will be open with the data for the initial set
// subscriptions fully synchronized.
タイプ:
Object
プロパティ:
  • update
    • タイプ: callback(realm)
    • Realm.App.Sync~MutableSubscriptionSetインスタンスとRealmインスタンスで呼び出されるコールバックを使用すると、サブスクリプションの初期セットを設定できます。 詳しくは、 Realm.App.Sync.SubscriptionSet#updateを参照してください。

  • rerunOnOpen
    • タイプ: Boolean
    • 任意のフラグ。 trueの場合、Realm が開かれるたびにupdateコールバックが再実行されます(例: ユーザーがアプリを開くたび)、それ以外の場合(デフォルトでは)、Realm がまだ存在しない場合にのみ実行されます。

logコールバック(レベル、メッセージ)

Atlas Device Sync クライアントをカスタム ロガーで測定するときにRealm.App.Sync.setLoggerに渡されるコールバック。

パラメーター:
  • レベル
    • タイプ: number
    • ログ エントリのレベル。0 から 8 まで(両端を含む)。 これをインデックスとして['all', 'trace', 'debug', 'detail', 'info', 'warn', 'error', 'fatal', 'off']に使用してレベルの名前を取得します。

  • メッセージ
    • タイプ: string
    • ログ エントリのメッセージ。

ログ レベル
タイプ:
"all" または"trace"または"debug"または"detail"または"info"または"warn"または"error"または"fatal"または"off"
openLocalRealm の動作

同期された Realm をすぐに開き、その操作を開始する場合のデフォルトの動作設定。 Realm を初めて開く場合、サーバー データがバックグラウンドでダウンロードされている間は が空になります。

OpenRealmBehaviorConfiguration

同期された Realm を開く方法を指定します。

タイプ:
Object
プロパティ:
  • タイプ
    • タイプ: string
    • Realm を開く方法 - ダウンロードが完了するまで待機する場合は ' DownloadBeforeOpen' を使用するか、ローカル Realm を開くには 'OpenImmediament' を使用します

  • timeOut 任意
    • タイプ: number
    • ダウンロードを待機する時間(ミリ秒単位)。 デフォルト: 無限大

  • timeOutBehavior 任意
    • タイプ: string
    • ダウンロードがタイムアウトした場合の動作 - 'openLocalRealm' がローカル Realm を開くか、'throwException' が例外をスローするようにします。

ProviderType

ユーザーを認証するために使用される 認証プロバイダ のタイプ。

タイプ:
"anon-user" または"api-key"または"local-userpass"または"custom-function"または"custom-token"または"oauth2-google" or "oauth2-facebook" or "oauth2-apple"
SSLConfiguration

以下では、Atlas Device Sync を使用してRealmインスタンスを作成するために使用されるさまざまなオプションについて説明します。

タイプ:
Object
プロパティ:
  • validate
    • タイプ: boolean
    • SSL 証明書を検証する必要があるかどうかを示します。 デフォルトはtrueです。

  • CertificatePath
    • タイプ: string
    • 信頼された SSL 証明書を検索するパス。

  • validateCertificates
    • タイプ: sslValidateCallback
    • サーバーの SSL 証明書を受け入れるか拒否するために使用されるコールバック関数。

Realm.App.Sync.SubscriptionOptions

のオプション Realm.App.Sync.SubscriptionSet.add

タイプ:
Object
プロパティ:
  • name
    • タイプ: stringまたはundefined
    • 追加されるサブスクライブの名前を設定します。 これにより、後でサブスクリプションを名前で参照できるようになります(例: Realm.App.Sync.MutableSubscriptionSet#removeByNameを呼び出す際など)。

  • スローオンアップデート
    • タイプ: booleanまたはundefined
    • デフォルトでは、既存のサブスクライブと同じ名前で異なるクエリを実行することで、既存のサブスクライブが新しいクエリで更新されます。 throwOnUpdateが true に設定されている場合、同じ名前で異なるクエリのサブスクリプションを追加すると、代わりに例外がスローされます。 同じ名前とクエリを持つサブスクリプションを追加しても、常に何も発生しません。

SyncConfiguration

以下では、Atlas App Services 同期を使用してRealmインスタンスを作成するために使用されるさまざまなオプションについて説明します。

タイプ:
Object
プロパティ:
  • user
    • タイプ: Realm.User
    • Realm.App.logInを呼び出すことで取得されたRealm.Userオブジェクト。

  • 柔軟
    • タイプ: boolean
    • フレキシブルな同期を使用するか( trueの場合)、パーティションベースの同期(デフォルト)を使用するか

  • partitionValue
    • タイプ: stringnumberBSON.ObjectId 、またはnull
    • パーティションキーの値。 パーティションベースの同期を使用する場合にのみ有効です。

  • onError 任意
    • タイプ: callback(session, syncError)
    • エラー状況で呼び出されるコールバック関数。 コールバックには、 sessionsyncErrorの 2 つの引数が渡されます。 syncError.name == "ClientReset"の場合、 syncError.pathsyncError.configが設定され、 syncError.readOnlyが true です(非推奨についてはRealm.App.Sync~ClientResetConfigurationを参照してください)。 それ以外の場合、 syncErrorは最大 5 つのプロパティを持つことができます。 namemessageisFatalcategorycode

  • customHttpheaders 任意
    • タイプ: Object
    • カスタム のマップ( string、stringHTTP headers )。

  • newRealmFile の動作 任意
    • タイプ: OpenRealmBehaviorConfiguration
    • 新しいファイルを作成してバックグラウンドで同期するか、ファイルが同期されるまで待機するか。 設定されていない場合、Realm は開く前にダウンロードされます。

  • existsRealmFile の動作 任意
    • タイプ: OpenRealmBehaviorConfiguration
    • 既存のファイルを開いてバックグラウンドで同期するか、ファイルの同期が完了するまで待ってから開くか。 設定されていない場合、Realm は開く前にダウンロードされます。