2014-07-08 2 views
0

구문 분석 REST API와 상호 작용하기 위해 shiki/kaiseki을 사용합니다. 사용자의 B과 관련없는 모든 A을 얻으려고합니다.하위 쿼리를 사용하여 개체를 필터링하는 방법?

은 내가 사용자에 대한 학사 학위를 얻을 수 있습니다 알고

parseClient.getObjects('B', { 
    where: { 
    user: { 
     __type: "Pointer", 
     objectId: "id here", 
     className: "_User" 
    } 
    }, 
    keys: 'a' 
}, callback) 

그리고이 나쁜 ID를 얻기 위해 개체 ID를 뽑아.

aIds = [ Bs ].map(function (b) { 
    return b.a.objectId 
}) 

다음으로 부정적인 일치 ID를 쿼리하십시오.

parseClient.getObjects('A', { 
    where: { 
    objectId: { $nin: aIds } 
    } 
}, callback) 

그러나 사용자는 쿼리 제한값 200보다 많은 B 값을 가질 수 있습니다. 하위 쿼리를 사용하려면 어떻게 다시 작성할 수 있습니까?


$ dontSelect

중첩 된 키 PARAM 평면이 가을 같은 것을 만드는, 작동하지 않습니다.

parseClient.getObjects('A', { 
    where: { 
    objectId: { 
     $dontSelect: { 
     query: { 
      className: 'B', 
      where: { user query }, 
     }, 
     key: 'a.objectId 
     } 
    } 
    } 
}, callback) 

// { code: 105, error: 'invalid field name: ' } 

$ notInQuery

where의 루트에 $ notInQuery을 넣어하거나 현재 객체를 참조하는 방법이있을 것 같지 않습니다.

parseClient.getObjects('A', { 
    where: { 
    $notInQuery: { 
     className: 'B', 
     where: { user query }, 
     key: 'a' 
    } 
    } 
}, callback) 

// { code: 102, error: 'Invalid key $notInQuery for find' } 

도움말!

답변

0

이것은 파스 모델의 제한 사항이며, 그 주위에서 발견 한 유일한 방법은 그에 따라 스키마를 조정하는 것입니다. 당신이 그것을 할 수

한 가지 방법은 모든 관련 User 포인터를 포함 A에 관계 함께 다음의 관계 필드에 대한 $ne 할 : 정말 약속 같은데

where: { 
    'relationColumn' : { 
    '$ne': { 
     '__type': 'Pointer', 
     'className': '_User', 
     'objectId': 'user b id here' 
    } 
    } 
} 
+0

아. 내일 보게 될거야. – AJcodez

+0

둘째로 배열 관계에 많은 양의 데이터를 저장하는 것은 권장되지 않습니다 (http://stackoverflow.com/questions/15354495/parse-com-create-with-nested-orrelated-objects/19343892#19343892). . – AJcodez

+0

'Array' 유형의 열은 최대 100 개의 항목에 대해 권장되며 큰 목록의 경우'Relation' 유형의 열입니다 (장면 뒤에서 전체 모음을 생성하므로 수백만 행을 처리 할 수 ​​있음). –

관련 문제