2014-11-24 2 views
0

허용 할 경우 모든 게시물을 올바르게 표시하는 ParseQueryAdapter가 있지만 친구의 게시물 만 표시하는 방법을 찾으려고합니다. 상대 코드 비트는 다음과 같습니다.Parse.com 관계형 쿼리 - 결과 좁히기 문제

public CustomAdapter(Context context) { 
    // Use the QueryFactory to construct a PQA that will only show 
    // Todos marked as high-pri 
    super(context, new ParseQueryAdapter.QueryFactory<ParseObject>() { 
     public ParseQuery create() { 

      ParseUser user = ParseUser.getCurrentUser(); 

      ParseRelation<ParseUser> relation = user.getRelation("friends"); 
      ParseQuery relationQuery = relation.getQuery(); 
      relationQuery.whereExists("objectID"); 

      ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Post"); 
      query.whereEqualTo("CreatedBy", relationQuery.whereExists("ObjectID")); 
      return query; 
     } 
    }); 
} 

데이터 구조는 다음과 같습니다. 사용자는 친구 관계가 있습니다. 그래서 그들과의 관계를 가져오고 게시물의 CreatedBy 사용자와 일치하는 objectID를 찾으려고합니다. 내가 겪고있는 문제 중 하나는 CreatedBy 필드가 Friend 관계의 objectID가 문자열 인 사용자에 대한 포인터라는 것입니다. 나는 여기에서 많은 다른 것들을 시도했지만, 나는 그것이 작동하도록하는 데 어려움을 겪고있다.

그래서 CreatedBy를 문자열로 변환해야하는지 확신 할 수 없지만 전체 쿼리에서 작동하는 방법을 모르겠습니다. 또는 objectID 필드를 보는 대신 친구 관계에있는 각 친구를 사용자로보고 있어야합니다. 당신이 원하는 무엇

답변

0

당신은 기본적으로 " 'CreatedBy'에서 포인터가이 쿼리에 의해 반환되는 행 중 하나와 일치하는 경우 나에게 행을 찾아"말을하고있는 whereMatchesQuery() 방법, 예컨대 :

public CustomAdapter(Context context) { 
    super(context, new ParseQueryAdapter.QueryFactory<ParseObject>() { 
     public ParseQuery create() { 

      ParseUser user = ParseUser.getCurrentUser(); 

      ParseRelation<ParseUser> relation = user.getRelation("friends"); 
      ParseQuery friendsQuery = relation.getQuery(); 

      ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Post"); 
      query.whereMatchesQuery("CreatedBy", friendsQuery); 
      return query; 
     } 
    }); 
} 

입니다.

이 방법은 Relational Queries에 설명되어 있습니다.

+0

Perfect! 그게 바로 제가 찾던 것입니다. 나는 그런 종류의 질문을 놓쳤다. – Shoggoth269