簡體   English   中英

生成唯一短編號而不是使用文檔 ID?

[英]Generate Unique Short Number instead of using Doc ID's?

我有一個商業案例,我需要在一個集合中包含一個包含數字字段的文檔,該數字字段將比另一個文檔的數字字段唯一。 這個數字必須是簡短的類型,並且應該是隨機的。 例如:2832。現在我知道這無法擴展,因為 4 位數字只能有 10k 個可能的數字組合,但是,目前這很好。

我想知道在 Firebase 中實現這一點的最佳方法。 我正在考慮在 JavaScript 中創建一個 4 位隨機數,然后每當生成一個新數字時,對包含一個包含每個唯一數字的數組字段的文檔的單獨集合進行檢查。 如果該號碼已經存在,則生成一個新號碼並再次檢查,如果不存在,則將該唯一號碼添加到數組中。

這是最佳方法嗎? 謝謝。

很難說某件事是否是最優的,但這種方法聽起來是一個合理的起點。

我可能已經開始有一個單獨的文檔,其編號作為其文檔 ID,但對於 10K 的值,甚至可能不需要 - 這意味着您的方法會更簡單。

確保使用事務對文檔執行更新,並使用安全規則確保沒有客戶端可以寫入數組中已經存在的值。

好吧,既然您已經願意維護一個使用過的數字數組,您可以通過使用完整的預隨機數組和一個從 0-9999 的簡單數字“指針”來消除“重試”因素。

Firestore 確實管理數據爭用: https://firebase.google.com/docs/firestore/transaction-data-contention

因此,獲取當前指針值並在事務中將其遞增將使指針值僅使用一次,並允許您從該指針值 position 的預隨機數組中獲得有保證的唯一值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM