gpt4 book ai didi

android - 在列表中组织 Android Realm 数据

转载 作者:太空狗 更新时间:2023-10-29 13:57:40 24 4
gpt4 key购买 nike

我正在考虑将我们当前的应用程序迁移到 Realm ,并试图找出将数据组织到 Realm 的最佳方式。对于这个问题,我将重点关注我的数据模型的 Photo 对象(但还有其他对象)。

我的所有数据对象都来自具有端点的 API,例如:getPopular()getNearbyPhotos(lat, lng)getUserPhotos(userId)getAlbumPhotos(albumId)getCollection(类型)。在大多数这些端点上,还有更多参数,例如 sort=best/chronological

我们目前使用 this non-relational DB在允许仅使用 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();

但是通过这种方法,我创建了一个额外的抽象层来简单地存储分组和排序元数据,我对此并不满意,我想在这里问一下:

如果不使用我想出的这个肮脏的 hack,我如何仅根据插入的顺序和组查询 Realm 中的数据?

编辑:

后续问题:Query realm data contained on other object

最佳答案

But because it's data that is never visually presented to the user, it is not sent to the client (I would like to migrate to Realm, but would be better to do it without having to change server-side data models and endpoit behaviors)

这很可怜,但可以理解。

无论如何,您可以为 Realm Photo 对象提供字段,例如

public class Photo extends RealmObject {
// other fields

private double latitude;
private double longitude;
private String score;
}

然后,您像现在一样使用 API 端点和参数查询服务器。

当结果出现时,您将它们存储在 Realm 中,并为它们分配纬度/经度/分数的值。您此时可以使用这些,因为您刚刚在服务器查询中使用了它们。

因此,如果您查询 api/getNearbyPhotos(1, 2)?sort=best:
(伪代码)

api.fetch("getNearbyPhotos(1, 2)?sort=best", new GetPhotoCompleteListener {
@Override
void onSuccess(List<Photo> photos) {
// assuming gson or something has already parsed the server response into photo objects
for (Photo p : photos) {
p.setLatitude(1);
p.setLongitude(2);
p.setScore("best");
}
realm.copyToRealmOrUpdate(photos);
}
}

现在您在 Realm 中有了一堆照片对象,您可以使用与在服务器上相同的方式进行查询。

关于android - 在列表中组织 Android Realm 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38140827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com