コレクション - React Native SDK
Realm にはオブジェクトのグループを表すいくつかのタイプがあります。これをコレクションと呼びます。 コレクションは、1 つのRealm タイプの 0 個以上のインスタンスを含むオブジェクトです。
Realm のクエリ エンジンを使用して、任意のコレクションをフィルタリングおよびソートできます。 コレクションはライブであるため、現在のスレッド上の Realm インスタンスの現在の状態を常に反映します。 コレクション通知をサブスクライブして、コレクションの変更をリッスンすることもできます。
結果
結果コレクションは、クエリ操作の遅延評価された結果を表します。 結果は不変です。結果コレクションに要素を追加したり、結果コレクションから要素を追加したり、削除したりすることはできません。 結果には、その内容を決定する関連付けられたクエリがあります。
リスト
Listは、2 つの Realm タイプ間の対多の関係を表します。 リストは可変です。書込みトランザクション内で、リストに要素を追加および削除できます。 リストはクエリに関連付けられておらず、オブジェクトモデルのプロパティとして宣言されます。
結果は遅延評価される
Realm は、そのクエリの結果をリクエストした場合にのみクエリを実行します。 この遅延評価により、大規模なデータセットや複雑なクエリを処理するための洗練された高性能なコードを書込むことができます。
コレクションはライブ
ライブ オブジェクトと同様に、Realm コレクションは通常ライブ されます。
ライブ結果のコレクションには、関連付けられているクエリの現在の結果が常に反映されます。
ライブ リストには、Realm インスタンス上の関係の現在の状態が常に反映されます。
以下の場合、コレクションはライブではありません。
これは、 の.. を使用して反復処理している 結果のコレクション です。 または.. の ステートメント。コレクションのオブジェクトを削除または変更して、結果コレクションを生成したフィルターから除外した場合でも、両方のステートメントはコレクション内のオブジェクトを反復処理します。
コレクションは固定された結果.snapshot() です。
コレクション通知と組み合わせると、ライブ コレクションによりリアクティブなコードが可能になります。 たとえば、ビューにクエリの結果が表示されるとします。 ビュー クラスで結果コレクションへの参照を保持すると、結果コレクションを更新したり最新であることを検証したりすることなく、必要に応じて結果コレクションを読み取ることができます。
重要
インデックスは変更される可能性があります
結果は自動的に更新されるため、 コレクション内のオブジェクトの位置インデックスやコレクション内のオブジェクトの数を保存しないでください。 保存されたインデックスやカウント値は、使用する時間によって期限切れになる可能性があります。
コレクションの操作
クエリ結果の制限
遅延評価の結果、Realm でクエリ結果を制限するために特別なメカニズムは必要ありません。 たとえば、クエリが数千のオブジェクトと一致するが、最初の 10 個のオブジェクトのみをロードする場合は、結果コレクションの最初の 10 個の要素のみにアクセスします。
ページ分割
遅延評価の代わりに、ページ区切りの一般的なタスクが非常に簡単になります。 たとえば、Realm 内の数千のオブジェクトに一致するクエリに関連付けられた結果コレクションがあるとします。 ページごとに 100 個のオブジェクトを表示します。 任意のページに進むには、ターゲット ページに対応するインデックスから、結果コレクションの要素にアクセスします。
概要
Realmコレクションは、1 つのRealm タイプの 0 個以上のインスタンスの等価コンテナです。
コレクションには、リストと結果の 2 つの主要なタイプがあります。 リストは Realm タイプの対多の関係を定義し、結果は読み取り操作の遅延ロード出力を表します。
結果コレクションを遅延評価できるため、限定的な結果やページ分割された結果を得るために特別なクエリを設計する必要がありません。 必要に応じてクエリを実行し、結果コレクションから読み取ります。
Realm のデータはライブです。つまり、オブジェクトは常に最新の保存状態を反映します。