我正在考虑将我们当前的应用程序迁移到领域,并试图找出将数据组织成令的最佳方式。对于这个问题我将重点关注Photo
我的数据模型的对象(但还有其他对象)。
我的所有数据对象均来自具有以下端点的 API:getPopular()
, getNearbyPhotos(lat, lng)
, getUserPhotos(userId)
, getAlbumPhotos(albumId)
, getCollection(type)
。在大多数端点上还有更多参数,例如sort=best/chronological
.
我们目前正在使用这个非关系型数据库 https://github.com/eyeem/potato在允许仅使用对象对对象列表进行排序和检索的项目上listName
。我们使用listName
作为端点+参数的组合。
Realm(作为关系数据库)使用标准查询,例如:
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();
但通过这种方法,我创建了一个额外的抽象层来简单地存储分组和排序元数据,我对此并不满意,我在这里问:
我如何能够仅根据插入的顺序和组来查询领域上的数据,而不使用我想出的这个肮脏的技巧?
edit:
后续问题:查询其他对象上包含的领域数据 https://stackoverflow.com/questions/38220180/query-realm-data-contained-on-other-object