我有以下代码来构建两个查询中的查询。
问题是结果未按updatedAt排序。
可能是什么问题?
let ownerQuery = PFQuery(className: "requests")
ownerQuery.whereKey("owner", equalTo: forUser)
ownerQuery.whereKey("stage", equalTo: "initiated")
let requestQuery = PFQuery(className: "requests")
requestQuery.whereKey("requested_by", equalTo: requestedBy)
requestQuery.whereKey("stage", equalTo: "accepted")
// fetch all request of current user as requestor or lender/seller
let query = PFQuery.orQuery(withSubqueries: [ownerQuery, requestQuery])
query.includeKey("requested_by")
query.includeKey("owner")
query.order(byDescending: "updatedAt")
答案 0 :(得分:0)
试试这个:
ownerQuery.order(byAscending: "updatedAt")
答案 1 :(得分:0)
问题原来是我处理检索数据的代码。 Parse返回排序结果。
我有以下代码,其中订购受到影响。这似乎是因为getDetails()在异步中返回。
所以我在返回之前添加了数组排序。我一次检索20行,因此对每个数组进行排序不应该是昂贵的。
我也发布在GitHub上。等待确认。
public class Problem07 {
static List<String> flatten(Collection<?> objects, Object aClass) {
if (objects == null) {
throw new NoSuchElementException();
}
if (objects.isEmpty()) {
return Collections.emptyList();
}
List<String> strings = new ArrayList<>();
/*TODO generify for other classes, not only hardcoded String*/
objects.forEach(o -> {
if (o instanceof ArrayList) {
ArrayList<String> o1 = (ArrayList<String>) o;
strings.addAll(o1);
} else {
strings.add(o.toString());
}
});
String formattedString = strings.toString()
.replace("[", "") //remove the right bracket
.replace("]", ""); //remove the left bracket
List<String> list = new ArrayList<>(Arrays.asList(formattedString.split(",")));
System.out.println(list);//prints: [a, b, c, d, e]
return list;
}
}