这是一个基本问题,但我无法理解这种关系在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);
任何人都可以帮助我?
答案 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用于高级关系(例如多对多)。