使用不同的查询获取帖子中的Firebase用户信息

时间:2018-09-28 00:50:15

标签: ios swift firebase firebase-realtime-database

我的Firebase实时数据库中有两个表:帖子和用户。结构是:

Option[Seq[A]

现在,我像这样在loadData()函数中获取数据:

liftOptionItem[A]

这很好。但是,我想运行第二个查询来获取用户信息(userName,userProfilePicURL),以便也可以显示该信息,因为我现在所拥有的只是userID。我这样做如下:

users
-- userID
---- userName
---- userProfilePicURL

posts
-- postID
---- postTimeStamp
---- postTitle
---- postContent

虽然发生了什么,但是它获得了用户信息并正确显示,但是我的第一个查询的时间顺序却被破坏了。它显示了同一用户的所有帖子,因此它们是按userID而不是postTimeStamp排序的。有解决办法吗?还是我需要采取完全不同的方法?

更新:到目前为止我发现的东西 当我执行print(dict)时,所有内容均以正确的顺序显示。因此,该错误将在以后发生。当我执行dump(self.posts)(包含所有帖子的数组)时,它们以错误的顺序显示。

我的猜测是,不是按照第一个查询的要求按时间顺序追加项目,而是根据userID添加项目,因此应用程序会按每个userID提取所有帖子。但是我不知道为什么会这样,我也无法在Internet上找到它。

1 个答案:

答案 0 :(得分:0)

原因:

  • 错误的原因是,您在for循环中使用了异步方法。
  • 因此您没有按顺序获取数据,因为从firebase提取数据是 异步方法。您必须为用户使用另一个数组并使用useriD对其进行管理

解决方案:

  • 您可以在项目的内部单元格中运行它...另一种方法是,可以为用户获取新数组,并使用发布数组的userId从该数据中加载用户数据。