【发布时间】:2019-12-04 06:42:17
【问题描述】:
我们很少在 Firebase 实时数据库上进行属性修改(“价格”),其结构如下:
../currencies/<currency>/value/
"price":343
每个登录的玩家只会听到一种特定的货币。我们的客户将根据玩家偏好选择正确的货币路径。
所以如果玩家设置为货币美元,firebase 客户端将监听此路径
../currencies/USD/value/
"price":343
这些货币的价格很少更改
由于这种结构,我们的服务器端需要在数据发生变化时将数据修改和非规范化到所有货币(我们可以有数十种货币)
因此,我们在叶子中添加了更多相同在所有货币中
我觉得这有点像:
../currencies/USD/value/
"price":343
"currency-source":"fx" . //this property will be copied to all
currencies vals 因为客户端只监听一个路径并且它也需要这些数据
如果在路径上维护它,也许我们可以使用一些查询,每个客户端都可以根据属性名称选择它的货币?
类似的东西:
../currencies/value/
"USD_price":343
"EUR_price":343
...
关于设计的想法?如果听起来更好,如何使用 Firebase 实时数据库查询来实现?
【问题讨论】:
-
这似乎确实完全可行。与
../currencies/<currency>/value相比,您在收听../currencies/value/<currency>_price节点时遇到任何困难吗? “如何使用 Firebase 数据库查询来实现”-> 您正在使用哪些 SDK(JS、Android、iOS)? -
@RenaudTarnec 我们没有困难,我只是认为它复杂化了我们的 firebase 树模型而没有真正的价值。我们使用 JS SDK
-
“它使我们的 firebase 树模型复杂化,但没有真正的价值”-> 哪种方法使它复杂化?收听 ../currencies/value/
_price 节点还是收听 ../currencies/ /value one?你到底在问什么?最好的方法是什么? -
@RenaudTarnec ./currencies/
/值一? -> 让事情变得复杂(正如我在问题中详述的那样),因为我们复制了所有属性。而且我不知道如何在客户端使用 ./currencies/value/ _price 方法,因此他只会使用玩家选择的货币。如果你能通过回答这个问题给我指路,我会很高兴 -
您在前端使用哪种语言? IE。您使用的是哪个 Firebase 客户端 SDK?
标签: firebase firebase-realtime-database