Parse.com中的关系查询

时间:2014-05-06 04:27:59

标签: android parse-platform

这是一个基本问题,但我无法理解这种关系在Parse中是如何运作的。

我有这种关系:Image link

简而言之,这是1 - N的关系。一个FeedPost有几条评论。

我希望我可以在查询中发送帖子ID,然后在该帖子上获得评论的araylist。

    ParseQuery<ParseObject> innerQuery = ParseQuery.getQuery("Comments");
    innerQuery.whereExists("UXKFwWyn3l"); //ID of the post
    ParseQuery<ParseObject> query = ParseQuery.getQuery("FeedPost");
    query.whereMatchesQuery("objectId", innerQuery);

任何人都可以帮助我?

1 个答案:

答案 0 :(得分:2)

使用此行

innerQuery.whereExists("UXKFwWyn3l"); 

你说&#34;所有在“&lt; UXKFwWyn3l&#39;&#39;&#34;

”栏中有价值的记录

此外,当您应该使用指针时,您正在使用PFRelation。在Comment中,您应该有一个带有指向FeedPost的指针的列。如果您这样做了,只要您已经拥有FeedPost对象,此查询就会为您提供所需的注释:

ParseQuery<ParseObject> query = ParseQuery.getQuery("Comments");    
query.whereEqualTo("post", thePostObject );
query.findInBackground(new FindCallback<ParseObject>() {
    public void done(List<ParseObject> comments, ParseException e) {
        if (e == null) {
            // "comments" is now a list of the comments
        } else {
            // Something went wrong...
        }
    }
});

你也可以在FeedPost中有一个反向关系,它应该是一个指向注释的指针数组(不是PFRelation)。如果这样做,您可以通过一个查询获取FeedPost和评论:

ParseQuery<ParseObject> query = ParseQuery.getQuery("FeedPost");
query.include("comments"); // this is the column with an array of pointers to comments
query.getInBackground("UXKFwWyn3l", new GetCallback<ParseObject>() {
  public void done(ParseObject feedPost, ParseException e) {
    if (e == null) {
      // Your feedPost now has an array with all the comments
    } else {
      // something went wrong
    }
  }
});

您应该只将PFRelation用于高级关系(例如多对多)。