我有这种情况:
一篇文章可以有很多评论。所以我在 Parse.com 中创建了一个 Post 类和一个 Comment 类。以下是定义或类及其数据:
一个帖子:
帖子有两条评论:
我想检索来自特定作者的第一条评论的帖子。这是我的代码:
PFQuery *query = [PFQuery queryWithClassName:@"Post"];
[query orderByAscending:@"createdAt"];
[query findObjectsInBackgroundWithBlock:^(NSArray *posts, NSError *error) {
for (PFObject* obj in posts) {
PFRelation* comments = [obj objectForKey:@"comment"];
PFQuery* theQuery = [comments query];
[theQuery whereKey:@"author" equalTo:@"John"];
[theQuery getFirstObjectInBackgroundWithBlock:^(PFObject *comment, NSError *error) {
NSLog(@"Post title=%@,body=%@", [obj objectForKey:@"title" ],[obj objectForKey:@"body"]);
NSLog(@"Comment content=%@",[comment objectForKey:@"content"]);
}];
}
}];
我认为它虽然有效,但效率不高。而且很难判断查询何时完成,因为有两个嵌套的异步调用。
有人有更好的解决方案吗?谢谢。
编辑:
我认为它效率不高的原因是因为存在嵌套查询。但我不知道如何使用 Relation 来获得我想要的东西。也许我不应该使用关系?相反,我应该将 Post 的 ObjectId 分配给 Comment 类?(但这种方法在输入数据时不如Relation方便)