我已经在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上奇怪地结合了这些?有人可以帮忙吗?谢谢!
答案 0 :(得分:0)
这里的最终答案是Parse在复合查询中不支持GeoQuery,即使没有给出警告。您需要在此方案中发出2个查询并自行合并结果。