我在Parse.com有一个朋友班和一个友谊班。友谊类有2列,名为“Friend1”和“Friend2”,代表关系,是指向“朋友”类的指针。
我想找到我20个最老的朋友。所以我在swift中尝试嵌套查询:
var queryInner = PFQuery(className: "Friend")
queryInner.orderByDescending("Age")
var queryOuter = PFQuery(className: "Friendship")
queryOuter.whereKey("Friend2", matchesQuery: queryInner)
queryOuter.whereKey("Friend1", equalTo: PFObject(withoutDataWithClassName:"Friend", objectId: friendId))
queryOuter.includeKey("Friend2")
queryOuter.limit = 20
queryOuter.findObjectsInBackgroundWithBlock{
//handling
}
它检索了20个朋友,但他们没有按年龄降序排序。这是一个解析问题吗?我的查询有问题吗? 谢谢!
答案 0 :(得分:2)
所以,正如你所说,Parse不支持对嵌套查询进行排序。根据您的建议,我看到了两种可能的替代方法:
1 /添加"年龄"友谊类的字段,指的是Friend2的年龄(关系表是单向的);然后在该课上做我的查询。 "年龄"字段由后台进程定期更新。减少在运行时的工作
2 /首先找到所有朋友,然后对结果进行排序。当朋友数量增长时,可能会在运行时更多地工作。不确定多少确切。另外,我认为单个解析查询返回的最大项数为1000;所以一旦有人有更多的朋友,额外的朋友就不会被收回。不是超级可扩展的。我认为我最终会实现1 /,除非一些解析专家有最后一分钟的建议! :)