有没有一种快速的方法可以使用 Firebase 执行数据库式查询?
例如:
给出 firebase 参考users
有字段user_id
, name
, and age
,执行与此类似的查询的最佳方法是什么:
SELECT name FROM users WHERE `user_id`=147;
and
SELECT COUNT(*) FROM users WHERE age=21;
一般来说,没有。 Firebase 本质上是一个“实时数据库”,随着数据变化不断向您传输更新,因此进行通用查询更加困难。目前,提供了几个(诚然有限的)查询原语。请参阅查询/限制 http://www.firebase.com/docs/queries.html文档中的页面。
您通常可以通过多种方法来解决这些限制:
-
明智地使用位置名称和优先级。如果将数据构造为 /users/[userid]/name,则只需检索 /users/147/name 即可完成第一个“查询”。如果您知道要按年龄查询,可以使用年龄作为用户节点的优先级,然后执行“usersRef.startAt(21).endAt(21).on('child_added', ...)”来获取所有 21 岁的用户。您仍然需要手动统计。
-
进行客户端查询。如果整个数据集很小,您也许可以检索整个数据集,然后在客户端手动过滤/处理它。
-
运行单独的服务器。它可以连接到 Firebase、同步数据,然后回答客户端的“查询”。它仍然可以通过 Firebase 与客户端通信,并且 Firebase 仍然可以作为主要数据存储,但您的单独服务器可以快速执行查询。
我们打算随着时间的推移对此进行改进,因为我们意识到与传统关系数据库系统提供的灵活查询相比,这是一个弱点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)