サブスクライブ
バックグラウンドでクエリから という名前のサブスクリプションを自動的に作成し、ローカルの Realm ファイルに対して同じクエリを実行した結果を返します。
これは、次のような操作を行うよりも効率的な代替手段です。
fun suspend getData(realm: Realm): RealmResults<Person> {
realm.subscriptions.update { bgRealm ->
add("myquery", bgRealm.query<Person>())
}
realm.subscriptions.waitForSynchronization()
return realm.query<Person>().find()
}
ローカル クエリを実行する前に、サーバーがすべてのデータを送信するまで待機するかどうかを定義できます。 これは関連しますが、レイテンシや大規模なデータセットをダウンロードする必要があるため、デバイスで利用可能なデータへのサブスクリプションの作成が遅れる可能性があります。
デフォルトの動作では、サブスクライブが初めて呼び出されると、サーバーからデータがダウンロードされるまでクエリ結果は返されません。 同じクエリをサブスクライブするための後続の呼び出しでは、クエリはローカル データベースで直ちに実行され、更新はバックグラウンドでダウンロードされます。
Return
ローカル Realm ファイルに対してクエリを実行した結果。 返される結果は、使用されたモードによって異なります。
パラメーター
サブスクライブの名前。 これは、 SubscriptionSetで後で識別するために使用できます。
サブスクライブを解決するために使用されるモードです。 詳細については、「 WaitForSync 」を参照してください。
サブスクリプションで定義されたオブジェクトをサーバーが返すまでの待機時間。 これは、 WaitForSync.ALWASおよびWaitForSync.FIRST_TIMEにのみ関連します。
スロー
クエリ結果が返される前に、指定されたタイムアウトに達した場合。
Flexible Sync を使用していない Realm でこのメソッドが呼び出された場合。
サーバーがクエリのセットを受け入れなかった場合、。 正確な理由は 例外メッセージ を参照してください。
バックグラウンドでローカル クエリの結果から匿名のサブスクリプションを自動的に作成し、Realm ファイルに対して同じクエリを再実行した結果を返します。 これは、サブスクライブを呼び出して名前付きバリアントを作成するのと同じように動作します。 具体的な動作の詳細については、このメソッドを参照してください。
Return
ローカル Realm ファイルに対してクエリを実行した結果。 返される結果は、使用されたモードによって異なります。
パラメーター
サブスクライブを解決するために使用されるモードです。 詳細については、「 WaitForSync 」を参照してください。
サブスクリプションで定義されたオブジェクトをサーバーが返すまでの待機時間。 これは、 WaitForSync.ALWASおよびWaitForSync.FIRST_TIMEにのみ関連します。
スロー
クエリ結果が返される前に、指定されたタイムアウトに達した場合。
Flexible Sync を使用していない Realm でこのメソッドが呼び出された場合。
バックグラウンドでローカル クエリ結果から という名前のサブスクリプションを自動的に作成し、Realm ファイルに対して同じクエリを再実行した結果を返します。
これは、次のような操作を行うよりも効率的な代替手段です。
fun suspend getData(realm: Realm): RealmResults<Person> {
val results = realm.query<Person>().find()
realm.subscriptions.update { bgRealm ->
add("myquery", results.query(""))
}
realm.subscriptions.waitForSynchronization()
return realm.query<Person>().find()
}
ローカル クエリを実行する前に、サーバーがすべてのデータを送信するまで待機するかどうかを定義できます。 これは関連しますが、レイテンシや大規模なデータセットをダウンロードする必要があるため、デバイスで利用可能なデータへのサブスクリプションの作成が遅れる可能性があります。
デフォルトの動作では、サブスクライブが初めて呼び出されると、サーバーからデータがダウンロードされるまでクエリ結果は返されません。 同じクエリをサブスクライブするための後続の呼び出しでは、クエリはローカル データベースで直ちに実行され、更新はバックグラウンドでダウンロードされます。
Return
ローカル Realm ファイルに対してクエリを実行した結果。 返される結果は、使用されたモードによって異なります。
パラメーター
サブスクライブの名前。 これは、 SubscriptionSetで後で識別するために使用できます。
サブスクライブを解決するために使用されるモードです。 詳細については、「 WaitForSync 」を参照してください。
サブスクリプションで定義されたオブジェクトをサーバーが返すまでの待機時間。 これは、 WaitForSync.ALWASおよびWaitForSync.FIRST_TIMEにのみ関連します。
スロー
クエリ結果が返される前に、指定されたタイムアウトに達した場合。
Flexible Sync を使用していない Realm でこのメソッドが呼び出された場合。
サーバーがクエリのセットを受け入れなかった場合、。 正確な理由は 例外メッセージ を参照してください。