2012-10-27 2 views
3

Parse.com iOS API를 사용하고 있습니다. 구문 분석에서 '사용자'테이블과 '세션'테이블이 있습니다. 나는 '사용자'의 'facebookid'열과 '세션'의 '사용자'열을 가지고 있습니다 (사용자와 세션 간에는 많은 관계가 있습니다). 나는 다음을 수행하는 질의를 작성하는 데 어려움을 겪고있다. 'facebookid'의 배열을 감안할 때, 가장 최근의 세션과 함께 각 'facebookid'와 연관된 'User'를 풀다. 다음 코드를 실행하면 'sessionQuery.limit = 1'을 생략하면 1 개의 'Session'객체 만 반환됩니다. 가장 최근의 세션뿐만 아니라 각 세션과 관련된 모든 세션을 가져옵니다.PFObject를 가져오고 정렬 된 관계를 가져 오는 PFQuery를 작성하는 방법

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 요청에서 수행하는 것을 선호합니다.

+0

반환되는 1 'Session'개체의 문제점을 명확히 설명해 주시겠습니까? –

+0

전체 쿼리에 대해 1 세션이 아닌 각 사용자마다 1 세션을 원합니다. – Tylerc230

+0

파스는 웹 사이트에 자체 SO 유형 섹션을 가지고 있습니다. 너는 거기서 너의 질문을 해본 다. 관계형 데이터베이스와 테이블과 겹치지 않는 테이블에 가입 할 때 프레임 워크가 너무 제한적이라는 것을 발견했습니다. 내가 틀렸을 수도 있지만 여러 쿼리를 실행하지 않고도 그렇게 할 수 있다고 생각하지 않습니다. –

답변

0

사용자가 가장 최근 세션에 대한 참조 (예 : mostRecentSession 속성)를 하나의 쿼리에 다시 저장하는 유일한 방법이 있습니다.

그런 다음 쿼리 할 때 API 당 간단히 [includeKey:][1]입니다.

이것은 쓰기 작업을 좀 더 복잡하게 만들고 (mostRecentSession 업데이트) 훨씬 쉽게 읽을 수 있도록하는 원칙을 따릅니다 (행당 시간순으로 정렬 된 큰 목록의 첫 번째 개체를 더 이상 선택하지 않아야 함).

관련 문제