1

我在 Parse 上构建了我的应用程序,最近添加了对使用 ParseGeoPoints 查找附近对象的支持。

我有 2 个查询:

ParseQuery<Stitch> query = new ParseQuery<Stitch>("Stitch");
query.whereEqualTo("complete", false);
query.whereNotEqualTo("archived", ParseUser.getCurrentUser().getUsername());
query.whereEqualTo("invited", ParseUser.getCurrentUser().getUsername());

ParseQuery<Stitch> nearby = new ParseQuery<Stitch>("Stitch");
nearby.whereWithinMiles("location", app.currentLocation, 0.1);
nearby.whereExists("location");
nearby.whereEqualTo("complete", false);
nearby.whereEqualTo("allowNearby", true);
nearby.whereNotEqualTo("invited", ParseUser.getCurrentUser().getUsername());

我将这些添加到列表中:

List<ParseQuery<Stitch>> queries = new ArrayList<ParseQuery<Stitch>>();
queries.add(query);
queries.add(nearby);

ParseQuery<Stitch> combined = ParseQuery.or(queries);
combined.orderByDescending("updatedAt");
combined.include("author");

然而,这个查询返回了一些非常奇怪的结果——即它忽略了附近查询的约束,并返回世界上所有位置的 Stitches。如果我从 ParseQuery.or() 中删除第一个查询,我会从附近获得正确的结果。

ParseQuery.or() 是否在 Android 上奇怪地结合了这些?任何人都可以帮忙吗?谢谢!

4

1 回答 1

0

这里的最终答案是 Parse 不支持复合查询中的 GeoQuery,即使没有给出警告。在这种情况下,您需要发出 2 个查询并自己合并结果。

于 2014-11-25T20:44:11.780 回答