3

我正在使用 Parse.com iOS api。我在解析中有一个“用户”表和一个“会话”表。我在“用户”中有“facebookid”列,在“会话”中有一个“用户”列(用户和会话之间存在一对多的关系)。我在编写执行以下操作的查询时遇到问题:给定一个“facebookid”数组,我想下拉与每个“facebookid”关联的“用户”以及他最近的会话。当我运行以下代码时,我只得到 1 个“会话”对象,当我省略“sessionQuery.limit = 1”时,我得到与每个用户关联的所有会话,而不仅仅是最近的。

PFQuery *userQuery = [PFUser query];
[userQuery whereKey:kFBUIDAttributeKey containedIn:fbids];
PFQuery *sessionQuery = [PFQuery queryWithClassName:kSessionParseObjectKey];
[sessionQuery includeKey:kUserParseAttributeKey];
sessionQuery.limit = 1;
[sessionQuery orderByDescending:kTimestampParseAttributeKey];
[sessionQuery whereKey:kUserParseAttributeKey matchesQuery:userQuery];
[sessionQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    complete(objects);
}];

我知道我可以为每个用户提出单独的请求,但更愿意在 1 个请求中完成。

4

1 回答 1

0

您可以在一个查询中取回它的唯一方法是,如果您存储了对用户最近 Session 的引用,例如在mostRecentSession属性中。

然后,当您查询时,只需[includeKey:][1]按照 API。

这遵循使您的写入更复杂(更新 mostRecentSession)并使读取更容易的原则(不再令人讨厌的“从每行按时间降序排序的大列表中选择第一个对象”)。

于 2013-08-21T00:08:48.517 回答