我正在考虑将我们当前的应用程序迁移到领域,并试图找出将数据组织成领域的最佳方法。对于这个问题,我将专注于Photo
我的数据模型的对象(但还有其他对象)。
我所有的数据对象都来自一个 API 的端点,例如:getPopular()
, getNearbyPhotos(lat, lng)
, getUserPhotos(userId)
, getAlbumPhotos(albumId)
, getCollection(type)
. 在大多数这些端点上,还有更多参数,例如sort=best/chronological
.
我们目前在项目中使用这个非关系数据库,它允许仅使用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();
但是通过这种方法,我创建了一个额外的抽象层来简单地存储分组和排序元数据,我对此并不满意,我在这里问:
在不使用我想出的这种肮脏的黑客攻击的情况下,如何仅根据插入的顺序和组来查询领域上的数据?
编辑:
后续问题:查询其他对象上包含的领域数据