如何指定解析查询只有在更新后才能获取解析对象? [Android]产品

时间:2017-05-23 12:46:36

标签: android parse-platform parse-server cloud-code

我们正在使用解析服务器和mongodb。用户请求ParseObject并使用领域将它们本地存储在他们的设备上。稍后用户必须检查来自该对象的更新。 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是我们模型的伪。

如前所述,必须修改查询以使用许多对象。 objectIdupdatedAt已知。 查询的外观如何?

1 个答案:

答案 0 :(得分:0)

您可以进行查询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();
}

我希望我的答案可以解决你的问题