以嵌套样式执行firebase查询。最佳实践?

时间:2016-07-13 10:55:07

标签: ios swift firebase firebase-realtime-database geofire

我正在使用firebase和swift等应用程序上的应用程序。我的问题是我发现自己嵌套了我的firebase“observeSingleEventOfType”来获取我需要的所有数据,这样我就可以把它放在我的“Post Class”中。我想知道是否有更好的方法,因为它似乎只需要花费很多时间来加载一个帖子? (我正在抓取一个信息,等待,然后抓住下一个,等待,然后抓住下一个,等待,抓住下一个......并将所有内容作为一个邮件项目放在链的末尾)

初次加载时,我需要位置,热门评论,用户是否喜欢帖子,用户是否关注帖子。目前我正在做的是

- >创建地理位置查询,抓取地理信息。在完成块内,我有一个observeSingleEventOfType来查找来自我的帖子节点的信息并存储为字典。在完成块的内部,我创建另一个observeSingleEventOfType调用以获取顶部注释,然后在此completionblock中,我创建另一个observeSingleEventOfType以查找用户是否正在关注帖子。然后在这里,我将所有数据存储在我的Post类中,看起来像

init(postKey: String, distance: Double, topComments: [Comment], liked: Bool, followingPost: Bool, dictionary: Dictionary<String, AnyObject>) {}

这是我的Json结构。

{
  "comments" : {
    "postKEY123" : {
      "CommentKEY123" : {
        "comment" : "aa"
      }
    }
  },
  "follow" : {
    "userId123" : {
      "postKEY123" : true
    }
  },
  "posts" : {
    "postKEY123" : {
      "commentCount" : 1,
      "postDescription" : "Aa",
      "likeCount" : 0,
      "userId" : "userId123"
    }
  },
  "users" : {
    "userId123" : {
      "email" : "user1@mail.com"
      "liked" : {
        "postKey123": true
       }
    },
  }
    "location" : {
    "postKey123" : {
      ".priority" : "9q9hrjj7cd",
      "g" : "9q9hrjj7cd",
      "l" : [ 37.33769226, -122.02885785 ]
    },
  },
}

我这样做的原因是Json数据没有嵌套。作为一种可能的替代方法,是否可以在后台获取后期异步的所有数据,并在该帖子的所有信息都准备好后返回它?我不认为我能做到这一点,因为你无法保证项目回来的时间和内容。这就是为什么我在彼此的完成块内逐个抓取数据的原因?

谢谢,

0 个答案:

没有答案