Я изучаю миграцию нашего текущего приложения в область и пытаюсь выяснить, какой способ организовать данные в полосе. По этому вопросу я сосредоточусь на объекте моей модели данных Photo
(но есть и другие).Организуйте данные Android Realm в списках
Все мои объекты данных прибывают из API с конечными точками, такими как: getPopular()
, getNearbyPhotos(lat, lng)
, getUserPhotos(userId)
, getAlbumPhotos(albumId)
, getCollection(type)
. На большинстве этих конечных точек есть дополнительные параметры, такие как sort=best/chronological
.
В настоящее время мы используем проект this non-relational DB, который позволяет сортировать и извлекать список объектов, используя только listName
. Мы используем listName
как комбинацию параметров endpoit +.
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
.so I «м в состоянии найти эти объекты с помощью простого запроса
ListPhoto listPhoto = realm
.where(ListPhoto.class)
.equalTo("id", id)
.findFirst();
Но с таким подходом я создаю дополнительный слой абстракции, чтобы просто хранить группировки и заказные метаданные, которые я не доволен, и я спрашиваю здесь :
Как я могу запросить данные о царстве на простом заказе и группе, в которую он был вставлен без использования этого грязного взлома? Я придумал?
редактировать:
последующий вопрос, что: Query realm data contained on other object
Я не уверен, что это возможно, так как вы хотите запросить поля, которые недоступны локально. Почему у вашей фотографии нет полей местоположения/оценки? Я предполагаю, что они делают на сервере –
@TimCastelijns точно, у них есть на сервере. Но поскольку это данные, которые никогда визуально не представлены пользователю, они не отправляются клиенту (я бы хотел перейти на Realm, но было бы лучше сделать это, не изменяя модели данных на стороне сервера и поведение на конечных точках) – Budius