3

Parse.com iOS API を使用しています。「ユーザー」テーブルと「セッション」テーブルが解析されています。「ユーザー」に「facebookid」列があり、「セッション」に「ユーザー」列があります(ユーザーとセッションの間には1対多の関係があります)。次のようなクエリを書くのに問題があります: 'facebookid' の配列が与えられた場合、各 'facebookid' に関連付けられた 'User' を最新のセッションと共にプルダウンしたいと思います。次のコードを実行すると、1 つの「Session」オブジェクトのみが返されます。「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

1 つのクエリでそれを取得できる唯一の方法は、ユーザーの最新のセッションへの参照をmostRecentSessionプロパティなどに保存した場合です。

次に、クエリを実行すると[includeKey:][1]、API に従って簡単に実行できます。

これは、書き込みをもう少し複雑にし (mostRecentSession を更新)、読み取りをはるかに簡単にするという原則に従います (行ごとに「時間の降順で並べ替えられた大きなリストから最初のオブジェクトを選択する」という面倒なことはもうありません)。

于 2013-08-21T00:08:48.517 に答える