我花了8个小时的时间用不同的方法来实现这个目标,我找不到一种效果很好/合理的方法。我想我可能会让它复杂化。非常感谢任何帮助。
一般要点是我有一个初始的tableview来加载来自所有用户/最终只是朋友的帖子。 用户可以通过点击特定单元格来“加入”帖子。 然后我需要另一个页面向用户显示他们加入的所有帖子,然后是最后一页,显示所有加入特定帖子的人员。
因此,当用户看到关于猫的帖子时,点击帖子,加入。进入另一个屏幕,猫现在将进入该tableview以及他们加入的任何其他帖子。单击猫细胞和所有加入猫的用户。
TableView1是所有帖子
TableView2是用户加入的帖子
TableView3是tableview2中所选单元格的“详细视图”,显示从TableView1返回该帖子的所有用户。
我绝对无法找到构建数据的好方法。
一种“捕获”是一个用户每天只能发一个帖子,所以在用户的帖子下永远不会有任何重复,但我很困惑,我甚至不知道这是否有所作为。
我基本上有类似的东西:
initiatedPosts:
ABC123:
Initiator : userUIDWhoDidIt
text: "talk about cats"
timestamp: 2093840928309482
PostsInResponseToThis:
User: userwhodidit
text: "cats suck"
users:
User1
(general user info)
PostsJoinedInOn
ABC123
这只是一个彻头彻尾的热点。我已经尝试了很多这样的事情,我忘记了我曾经尝试过的事情,所以一双新鲜的眼睛会很棒。
我基本上需要:
1)查询view1上所有发起的帖子
2)查询当前用户在视图2上加入的所有帖子
3)从视图2
中查询已加入所选帖子的所有人员我知道如何运行这些查询并将其全部添加到tableviews中,我只是不知道如何设置我的数据库。
答案 0 :(得分:1)
使用Firebase,您通常应该将数据结构和存储密钥展平,以便从任何节点查找所需的数据。这是一个适合所有用例的Bolt架构。
path /posts/{post_id} is Post {}
path /users/{user_id} is User {}
type PostID extends String {}
type UserID extends String {}
type Post {
author_id: UserID
text: String
timestamp: Number
reply_post_ids: Map<PostID, Boolean>
}
type User {
post_ids: Map<PostID, Boolean>
reply_post_ids: Map<PostID, Boolean>
}
查询view1上所有已发布的帖子
只需抓取/posts
上的所有帖子。
2)查询当前用户在视图2上加入的所有帖子
在/users/{user_id}/post_ids
中查找每个帖子。您甚至可以在/users/{user_id}/reply_post_ids
查找回复。
3)从视图2
中查询已加入所选帖子的所有人员
对于帖子,通过/users/{user_id}/reply_post_ids
查找所有帖子,然后在这些帖子中查找用户。
虽然您可能觉得自己要进行大量往返Firebase的游览,但Firebase会根据需要智能地批量处理请求。有关详细信息,请参阅this StackOverflow question。