2014-11-24 52 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

你想要什麼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; 
     } 
    }); 
} 

你基本上說:「找我行,其中在‘CreatedBy’指針一致通過該查詢返回的行之一」。

該方法記錄在Relational Queries

+0

完美!這正是我所期待的。我錯過了這種查詢。 – Shoggoth269 2014-11-25 02:32:21