3

現在のアプリをレルムに移行することを検討しており、データをリームに編成する最良の方法を見つけようとしています。この質問で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();

しかし、そのアプローチでは、グループ化と順序付けのメタデータを単純に格納するための追加の抽象化レイヤーを作成していますが、これには満足できず、ここで質問します。

私が思いついたこの汚いハックを使用せずに、挿入された順序とグループに基づいてレルムのデータをクエリするにはどうすればよいですか?

編集:

それに対するフォローアップの質問:他のオブジェクトに含まれるレルムデータのクエリ

4

1 に答える 1