我最近开始使用 Firebase。但是,由于我不熟悉 NoSQL 数据库,因此在构建它时遇到了一些麻烦。
我正在开发一个时间表应用程序,多个用户可以输入他们每天上类的开始和结束时间,并将其保存到数据库中。
目前我的 firebase 的结构是这样的:
但是,我在访问我的应用程序中的这些数据时遇到了一些问题。最重要的是,这感觉不对。首先,我只想在每次用户输入内容时在“时间表”下添加一个新条目,但显然,我也不希望用户能够在一天内添加 2 个条目。
我知道可能有一些复杂的方法可以阻止用户这样做,但我觉得如果我知道我应该如何最好地构建这个数据库,这一切都可以通过更简单的方式解决。
稍后我想遍历当月的所有日期,以便特定用户在表格中向他显示该月每一天的所有开始/结束时间。
更新:我正在考虑对我的数据库进行反规范化,但这真的有帮助吗?
最佳答案
你应该阅读 this blog post ,由 Firebase 团队编写。
TL;DR 是您应该对您的数据进行非规范化,因为 Firebase 针对某些类型的操作进行了优化(您无需完全理解该优化的细节即可正确使用 Firebase)。
“我在我的应用程序中访问这些数据时遇到了一些问题”
什么样的麻烦?
“我也不希望用户能够在一天内添加 2 个条目。”
这并不是真正的反规范化问题;现在使用您的结构,您可以只检查 null 的路径。
new Firebase('path/to/timesheets/April/'+ queryDate) === null
,其中 queryDate 是您要检查的日期。
如果以上返回 true,则您的用户尚未提交时间表。如果是这样,您不应该允许他们这么做。
“我想遍历特定用户当月的所有日期,以便在表格中向他显示该月每一天的所有开始/结束时间。”
你可以!使用 for 循环遍历嵌套在请求 new Firebase("path/to/April")
时返回的对象下的所有值。
关于javascript - 在 Firebase 中结构化数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23214651/