按 includeKey class 中的值排序 ParseQuery 结果

Order ParseQuery results by value in includeKey class

我有 2 个 PFObjects - 一个 Player 和 PlayerStats。还有几个其他 PFObjects 与 PFPlayer 相关联。

我想列出得分最高的玩家。得分包含在 PlayerStats 中。

现在我试过了:

PFQuery *andQuery = [PFQuery queryWithClassName:@"Player"];
[andQuery includeKey:@"playerStats"]; 
PFQuery *statsQuery = [PlayerStats query];
[statsQuery orderByDescending:@"score"];
[andQuery whereKey:@"miniStats" matchesQuery:statsQuery];

但这似乎不尊重返回统计信息的顺序。我真正想做的是按包含的 class.

中的值对我的 andQuery 进行排序

我已经尝试 运行 一个基本查询并在之后对结果进行排序,但是我有超过 999 名玩家,这是 PFQuery 的限制,所以这无济于事。

我怀疑我必须执行 2 个级别的 PFQuery - 一个用于 PlayerStats,按顺序,然后根据该查询的结果,使用玩家的 objectId 提交另一个查询以获取 Player 对象。但这似乎很麻烦,尤其是当我一次只搜索 20 个结果时。

理想情况下应该是这样的:

[andQuery orderByDescending:@"playerStats.score"]; 

您声明了 statsQuery 并使用了 miniStatsQuery。

为什么不在每个 PlayerStats 对象上存储一个 Player 指针,然后您可以查询排序后的 PlayerStats 并包含 Player 键?

我们希望,但不支持。唯一的方法是对结果进行排序。起码underscorejs简洁又牛逼...

var _ = require('underscore');

PFQuery *andQuery = [PFQuery queryWithClassName:@"Player"];
[andQuery includeKey:@"playerStats"];
andQuery.find().then(function(players) {
    players = _.sortBy(players, function(player) {
        return player.get("playerStats").get("score");
    });
});

EDIT - 我一开始应该提到:如果 PlayerStat 有一个指向 Player 的指针(这是明智的),那么你可以查询统计数据,比如所有的东西-时间最高分...

PFQuery *andQuery = [PFQuery queryWithClassName:@"PlayerStat"];
[andQuery includeKey:@"user"];
[andQuery descending:@"score"];

至少点符号适用于下级键(3 深是最大值)...

[andQuery includeKey:@"user.somePointerOnUser"];

与所有查询一样,这些限制为最多 1000 个。