使用Firebase数据库我需要决定如何组织用户/帖子(例如推文)关系。两个常见的阅读任务包括: -
我目前使用它:
posts
randproject1234jdfs
user_uid: randomUserName1234,
content: "example"
users
randomUserName1234
posts
project_id: randproject1234jdfs
nickname: "Mr Example"
这两次存储相同的信息:
删除其中一个会导致数据读取速度明显变慢(必须遍历整个文件夹以查看user_uid / project_id是否与给定的帖子/用户匹配)?
或者以完全不同的方式组织数据会更好(例如删除用户/帖子分割)?
答案 0 :(得分:1)
您想要执行以下操作:
显示用户帖子的概述
根据内容过滤和选择特定帖子
你可以这样做:
posts
randomid
user_uid: randomUserName1234,
content: "example"
posttitle: "English"
randomid2
user_uid: randomUserName1235,
content: "examples"
posttitle: "Math"
users
randomUserName1234 <-------------------- userid
email: email@gmail.com
nickname: "Mr Example"
randomUserName1235<--------------------anotheruserid
email: email@gmail.com
nickname: "Mr Awesome"
由于您想要显示用户的帖子,那么您只需查询节点posts
,就像这样:orderByChild(user_uid).equalTo(randomUserName1234)
使用它可以检索我猜的帖子内容
要使用上述内容根据内容检索任何用户的帖子,您可以这样做:
orderByChild("posttitle").equalTo("English")
然后检索我认为他们是帖子的节点content
。
记住非规范化是正常的,这很重要,否则你将很难进行查询。 https://firebase.googleblog.com/2013/04/denormalizing-your-data-is-normal.html
用户节点让它拥有此应用程序中的用户列表。
帖子节点将如上所示,它将通过如上所示user_uid: randomUserName1235
连接到用户。