1

我有这种情况:

一篇文章可以有很多评论。所以我在 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方便)

4

1 回答 1

1

多对多推荐使用关系类型,一对多推荐使用“指针”和“数组”

于 2015-09-01T16:11:48.603 回答