我在整个stackoverflow中进行了搜索,以寻找一种生成数字键或最终用户可读的任何类型的键的方法。
我发现有多个答案在说(您不应该)。我知道了..但是有什么选择。.
例如,假设某个客户在订购方面遇到问题,并且必须将uid 1UXBay2TTnZRnbZrCdXh
拼写到您的呼叫中心?
答案 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,以了解更多信息。