Как задать запрос разбора, чтобы получить объекты разбора, только если они были обновлены? [Android]
Мы используем parse server и mongodb. Запрос пользователя ParseObject
s и храните их локально на своем устройстве с царством. В дальнейшем пользователи должны проверять наличие обновлений от этих объектов. 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();
}
Я надеюсь, что мой ответ решит вашу проблему