現在のアプリをレルムに移行することを検討しており、データをリームに編成する最良の方法を見つけようとしています。この質問でPhoto
は、データ モデルのオブジェクトに焦点を当てます (他にもあります)。
すべてのデータ オブジェクトは、 、 、 、 などのエンドポイントを持つ APIgetPopular()
からgetNearbyPhotos(lat, lng)
到着getUserPhotos(userId)
しgetAlbumPhotos(albumId)
ますgetCollection(type)
。これらのエンドポイントのほとんどには、sort=best/chronological
.
現在、プロジェクトでこの非リレーショナル DBlistName
を使用しており、 . listName
エンドポイントとパラメーターの組み合わせとして使用します。
Realm (リレーショナル DB として) は、次のような標準クエリを使用します。
realm.where(User.class)
.contains("name", "Doe")
.findAll();
すべてのデータがローカルで利用できる場合は問題なく機能しますが、ここでの問題は、これらのクエリの多くのデータがサーバー側に保持され、クライアントに送信されないことです。たとえば、モデルには場所もソートPhoto
用のスコアも含まれていません。best
現在のテスト プロジェクトでは、ListPhoto
現在のプロジェクトでオブジェクトを次のように使用するのと同様のオブジェクトを作成することで、この問題を回避しています。
public class ListPhoto extends RealmObject {
@PrimaryKey public String id;
public RealmList<Photo> list;
}
そして、実際の API エンドポイントとパラメーターを として使用id
します。そのため、単純なクエリでこれらのオブジェクトを見つけることができます
ListPhoto listPhoto = realm
.where(ListPhoto.class)
.equalTo("id", id)
.findFirst();
しかし、そのアプローチでは、グループ化と順序付けのメタデータを単純に格納するための追加の抽象化レイヤーを作成していますが、これには満足できず、ここで質問します。
私が思いついたこの汚いハックを使用せずに、挿入された順序とグループに基づいてレルムのデータをクエリするにはどうすればよいですか?
編集:
それに対するフォローアップの質問:他のオブジェクトに含まれるレルムデータのクエリ