有没有一种使用 Firebase 执行数据库式查询的快速方法?
例如:
给定一个包含字段user_id
、name
和age
的 firebase 引用 users
,什么是最好的执行与此类似的查询的方法:
SELECT name FROM users WHERE `user_id`=147;
和
SELECT COUNT(*) FROM users WHERE age=21;
最佳答案
一般来说,不会。 Firebase 本质上是一个“实时数据库”,随着数据的变化不断向您提供更新,因此进行通用查询更加困难。目前,提供了几个(公认的有限的)查询原语。查看Queries/Limits文档中的页面。
您通常可以通过多种方法解决这些限制:
- 巧妙地使用位置名称和优先级。如果将数据结构化为/users/[userid]/name,则只需检索/users/147/name 即可完成您的第一个“查询”。如果您知道要按年龄查询,则可以使用年龄作为用户节点的优先级,然后执行“usersRef.startAt(21).endAt(21).on('child_added', ...)”以让所有用户都年满 21 岁。您仍然需要手动计算他们。
- 进行客户端查询。如果整个数据集很小,您可以检索整个数据集,然后在客户端手动过滤/处理它。
- 运行单独的服务器。它可以连接到 Firebase,同步数据,然后为客户回答“查询”。它仍然可以通过 Firebase 与客户端通信,并且 Firebase 仍然可以作为主要数据存储,但您的单独服务器可以完成快速执行查询的工作。
我们打算随着时间的推移对此进行改进,因为我们意识到与传统关系数据库系统提供的灵活查询相比这是一个弱点。
关于javascript - 使用 Firebase 的数据库样式查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11587775/