Docs Menu
Docs Home
/ /
Atlas Device SDK
/ /

パーティションベースの同期 - Node.js SDK

項目一覧

  • パーティション値
  • パーティションベースの同期済み Realm を開く
  • バンドルされたパーティションベースの同期された Realm を開く
  • パーティションベースの同期から Flexible Sync への移行
  • 移行後のクライアント コードの更新
  • サブスクリプションの削除と手動作成

Atlas Device Sync には、 Flexible Syncとパーティションベースの同期の 2 つの同期モードがあります。 Flexible Sync を使用することをお勧めします。 このページの情報は、パーティションベースの同期を使用する既存のアプリを持つユーザーをサポートするためのものです。

注意

Atlas Device Sync による同期モードの一致

クライアント アプリケーションでAtlas Device Syncを使用する場合、実装はバックエンド アプリ構成で選択した同期モードと一致する必要があります。 アプリケーションに使用できる同期モードは 1 つだけです。 同じアプリ内で パーティションベースの同期 と Flexible Sync を混在させることはできません。

バックエンド アプリ構成にパーティションベースの同期を選択する場合、クライアント実装にはパーティション値を含める必要があります。 これは、 Flexible Sync を設定するときに選択したパーティションキーフィールドの値です。

パーティション値によって、クライアント アプリケーションがアクセスできるデータが決まります。

同期された Realm を開くときに、パーティション値を渡します。

パーティションベースの同期 を使用してRealmを開くには、 Realm.open()を呼び出します。 構成オブジェクトを渡します。これには、 SyncConfigurationオブジェクトを定義する syncプロパティが含まれている必要があります。 同期構成では、 userpartitionValueを含める必要があります。

const config = {
schema: [Car],
sync: {
user: app.currentUser,
partitionValue: "myPartition",
},
};
const realm = await Realm.open(config);
const config: Realm.Configuration = {
schema: [Car],
sync: {
user: app.currentUser!,
partitionValue: "myPartition",
},
};
const realm = await Realm.open(config);

重要

パーティションベースの同期構成ではオフライン ログインがサポートされています。バックグラウンド同期を使用してすぐに、またはパーティションベースの同期を使用してタイムアウトが経過した後にRealmを開くことができます。

パーティションベースの同期 を使用するバンドルされた同期 Realmを開く場合は、元の Realm 構成で使用されていたのと同じパーティション キーを使用する必要があります。 別のパーティションキーを使用すると、バンドルされている Realm を開くときに SDK はエラーをスローします。

App Services Device Sync モードを、パーティションベースの同期から Flexible Sync に移行できます。 移行は自動プロセスであり、アプリケーション コードを変更する必要はありません。 自動移行には、Realm Node.js SDK バージョン 11.10.0 以降が必要です。

移行により、既存の App Services ユーザーと認証構成を維持できます。 Flexible Sync は、より多目的の権限構成オプションとよりきめの細かいデータ同期を提供します。

App Services App をパーティションベースの同期から Flexible Sync に移行する方法の詳細については、「 Device Sync モードの移行 」を参照してください。

パーティションベースの同期から Flexible Sync への自動移行には、クライアント コードを変更する必要はありません。 ただし、この機能をサポートするために、Realm は 2 つの同期モード間の違いを次の方法で自動的に処理します。

  • partitionKey == partitionValueの各オブジェクトタイプの Flexible Sync サブスクリプションを自動的に作成します。

  • すべてのオブジェクトにpartitionKeyフィールドを挿入します(フィールドがまだ存在しない場合)。 これは自動 Flexible Sync サブスクライブに必要です。

If you need to make updates to your client code after migration, consider updating your client codebase to remove hidden migration functionality. 次の場合には、クライアント コードベースを更新する必要がある場合があります。

  • クライアント コードベースで新しいモデルを追加または変更する

  • Realm オブジェクトの読み取りまたは書き込みを含む機能を追加または変更する場合

  • 同期するデータの内容をより詳細に制御する機能を実装したい

Flexible Sync を使用するようにパーティションベースの同期クライアント コードを変換するには、次の変更を行います。

  • 同期された Realm を開くSyncConfigurationオブジェクトにflexible:trueを追加します

  • Flexible Sync サブスクライブで使用する関連プロパティをオブジェクトモデルに追加します。 たとえば、ユーザーが自分のデータのみを同期できるようにするには、 ownerIdプロパティを追加します。

  • 自動 Flexible Sync サブスクライブを削除し、関連するサブスクライブを手動で作成します。

これらの戦略にデータをモデル化する方法の例を含む、Flexible Sync 権限戦略の例については、 Device Sync 権限ガイド を参照してください。

パーティションベースの同期から Flexible Sync に移行すると、Realm はアプリ用の非表示の Flexible Sync サブスクリプションを自動的に作成します。 次回サブスクリプションを追加または変更するときは、次の操作を行うことをお勧めします。

  1. 自動生成サブスクライブを削除します。

  2. クライアント コードベースに関連するサブスクリプションを手動で追加します。

これにより、将来の反復やデバッグのために、すべてのサブスクライブ ロジックをコードベースにまとめて表示できます。

自動生成される Flexible Sync サブスクライブの詳細については、「クライアント アプリの Flexible Sync への移行 」を参照してください。

戻る

Atlas へのデータのストリーム