如何指定解析查询以仅在更新对象时获取解析对象? [Android]
How to specify parse query to get parse objects only if they have been updated? [Android]
我们正在使用解析服务器和 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();
我们修改了此 post 的查询模型。 ParseObject
是我们模型的伪。
如前所述,必须修改查询以处理许多对象。 objectId
s 和 updatedAt
s 是已知的。 查询应该是什么样子的?
您可以查询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();
}
希望我的回答能解决你的问题
我们正在使用解析服务器和 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();
我们修改了此 post 的查询模型。 ParseObject
是我们模型的伪。
如前所述,必须修改查询以处理许多对象。 objectId
s 和 updatedAt
s 是已知的。 查询应该是什么样子的?
您可以查询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();
}
希望我的回答能解决你的问题