Как задать запрос разбора, чтобы получить объекты разбора, только если они были обновлены? [Android]

Мы используем parse server и mongodb. Запрос пользователя ParseObjects и храните их локально на своем устройстве с царством. В дальнейшем пользователи должны проверять наличие обновлений от этих объектов. ParseObject предлагает updatedAt атрибут, поэтому мы будем запрашивать объекты, где updatedAt был изменен. Для одного объекта запрос будет выглядеть примерно так:

ParseObject object = new ParseObject();
ParseQuery<ParseObject> query = new ParseQuery<>(ParseObject.getQuery());
query.whereEqualTo("objectId", "9jK7lGt7U").whereGreaterThan("updatedAt", object.getUpdatedAt());
ParseObject queriedObject = query.findInBackground();

Мы изменили модель запроса для этого поста. ParseObject это псевдо нашей модели.

Как было сказано ранее, запрос должен быть модифицирован для работы со многими объектами. objectIdс и updatedAtс известны. Как должен выглядеть запрос?

1 ответ

Решение

Вы можете сделать запрос из LocalDatastore,

ParseObject queriedObject = query.findInBackground();
query.fromLocalDatastore();

И после запроса по каждому объекту вы можете вызвать для каждого объекта fetchIfNeeded

На каждом объекте, который вы получаете, вы можете сделать это:

object.fetchIfNeededInBackground(new GetCallback<ParseObject>() {
  public void done(ParseObject object, ParseException e) {
    // all fields of the object will now be available here.
  }
});

С вашим кодом вы можете написать это:

ParseQuery<ParseObject> query = new ParseQuery<>(ParseObject.getQuery());
query.whereEqualTo("objectId", "9jK7lGt7U").whereGreaterThan("updatedAt", object.getUpdatedAt());
query.fromLocalDatastore();
ParseObject queriedObject = query.findInBackground();


for( int i=0; i < queriedObject.length-1; i++)
{
    queriedObject[i].fetchIfNeededInBackground();
}

Я надеюсь, что мой ответ решит вашу проблему

Другие вопросы по тегам