javascript - 在 Firebase 中结构化数据

标签 javascript firebase database-design firebase-realtime-database database

我最近开始使用 Firebase。但是,由于我不熟悉 NoSQL 数据库,因此在构建它时遇到了一些麻烦。

我正在开发一个时间表应用程序,多个用户可以输入他们每天上类的开始和结束时间,并将其保存到数据库中。

目前我的 firebase 的结构是这样的:

http://imgur.com/tnojU8x

但是,我在访问我的应用程序中的这些数据时遇到了一些问题。最重要的是,这感觉不对。首先,我只想在每次用户输入内容时在“时间表”下添加一个新条目,但显然,我也不希望用户能够在一天内添加 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/

相关文章:

javascript - 有没有办法在没有 onsubmit() 的情况下在提交时触发 javascript 函数

javascript - 用于基于 Web 的向下钻取图表的开源库

javascript - 正确的 JavaScript IF Else 语法

java - JPA 中 XML 数据的列类型

database - 使用用户定义的类型作为主键

javascript - 如何在 React 中使用 Tailwindcss 转换 div

ios - 在 Firebase 中更新值后更新 TableView

python - 如何将 Firebase 与基于 Linux 的客户端应用程序一起使用,以便与服务器进行双向消息通信

swift - 从 Firebase 检索时实际未设置变量

sql - 类别数据库设计