我正在尝试使用PhoneGap,AngularJS和Firebase编写消息传递应用程序。我正在尝试使用Firebase异常查询方法(1,2)来确定正确的数据库结构是正确的。
我需要一个消息“表”,其中存储了所有消息,但问题是这是一个NoSQL表,因此如果数据没有专门格式化,则很难检索数据。
例如,我最初考虑使用/messages/{userId}
来获取用户的所有消息,/messages/{userId}/{partnerId}
来获取特定的消息链,但我不能这样做,因为它意味着数据必须重复,一次是发送消息的人,一次是接收者。
任何人都可以建议一个适用于Firebase查询结构的布局,并允许:
答案 0 :(得分:1)
在这篇文章中查看data denormalizing。我遇到了类似的挑战,对我有用的解决方案是将自动ID下的所有数据存储在特定对象中,如果需要,我会根据需要在多个位置存储对该数据的引用。
将此问题应用于您的问题,如果简化,我会选择以下内容:
root/messages/{message_by_auto_id}/{message_body}
root/users/{user_id}/messages_this_user_can_see/{ref_to_message}
所以如果用户发布消息,应用程序需要将消息保存在消息中,并将对该消息的引用保存给每个朋友,如上所述。