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