繁体   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