易于阅读的文档或收藏密钥

时间:2018-12-14 14:30:07

标签: firebase google-cloud-firestore

我在整个stackoverflow中进行了搜索,以寻找一种生成数字键或最终用户可读的任何类型的键的方法。

我发现有多个答案在说(您不应该)。我知道了..但是有什么选择。.

例如,假设某个客户在订购方面遇到问题,并且必须将uid 1UXBay2TTnZRnbZrCdXh拼写到您的呼叫中心?

1 个答案:

答案 0 :(得分:1)

从密钥包含的数据中取消关联通常是一个好主意。数据可以更改,用户名,密码,位置等。此类数据非常动态。但是,链接和引用本质上是更静态的。

假设您有一个关注者列表,并且您使用他们的用户名作为键。如果用户更改其用户名,不仅将删除并重写其整个节点,而且该键在数据库中的所有其他出现也会更改。如果密钥是静态的,则子用户名中唯一更改的项。

所以回答这个问题:这是一个选择

orders
  firebase_generated_key_0
     order_number: "1111"
     ordered_by: "uid_0"
     order_amount: "$99.95"
  firebase_generated_key_1
     order_number: "2222"
     ordered_by: "uid_1"
     order_amount: "$12>95"

使用此结构,您可以获得订单编号,指向订购该订单的用户的链接以及订单的总额。如果客户更改了订单上的内容,则只需简单地更改order_amount即可将订单保留在原处。

编辑:

一个注释/问题,询问使用Firebase写入数据时的竞赛条件。有许多解决方案,但Firebase Transactions的一个很好的起点是从本质上“锁定”数据以防止并发修改。

请参阅Save data as transactions,以了解更多信息。

相关问题