如何指定解析查询以仅在更新对象时获取解析对象? [Android]

How to specify parse query to get parse objects only if they have been updated? [Android]

我们正在使用解析服务器和 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();

我们修改了此 post 的查询模型。 ParseObject 是我们模型的伪。

如前所述,必须修改查询以处理许多对象。 objectIds 和 updatedAts 是已知的。 查询应该是什么样子的?

您可以查询fromLocalDatastore,

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();
}

希望我的回答能解决你的问题