如何为Firestore中的文档制作自定义自动生成的ID

安德里安·科霍什维利(Andrian Koghoshvili)

对于我的项目,我需要可以轻松共享的ID,因此firestores默认自动生成的ID将无法使用。
我正在寻找一种自动生成ID的方法,8329423ID将在0到9999999范围内递增或随机选择。

弗兰克·范普菲伦

Firestore的自动ID字段旨在统计地确保没有两个客户端会生成相同的值。这就是为什么它们要长久的原因:要确保它们中有足够的随机性(熵)。

这使Firestore可以完全在客户端确定这些密钥,而无需在服务器上查找其生成的密钥之前是否已经在其他客户端上生成。而这又具有以下主要优点:

  1. 由于密钥是在客户端生成的,因此当客户端未连接到任何服务器时也可以生成密钥。
  2. 由于密钥是在客户端生成的,因此无需往返服务器即可生成新密钥。这大大加快了该过程。
  3. 由于密钥是在客户端生成的,因此在生成密钥的客户端之间没有竞争。每个客户端仅根据需要生成密钥。

如果这些好处对您的用例很重要,那么您应该强烈考虑是否会创建比Firestore更好的唯一ID。例如,Firestore的ID具有62 ^ 20个唯一值,这就是为什么从统计学上保证它们在很长一段时间内永远不会生成相同值的原因。您建议的0-9999999范围具有1百万个唯一值,这很可能会产生重复值。

如果您确实想要这种ID方案,则需要将已经给出的ID存储在服务器上(可能在Firestore中),以便在生成新密钥时可以对其进行检查。执行此操作的一种非常常见的方法是保留您已经在文档中分发的最后一个ID的计数器。要生成新的唯一ID,您:

  1. 从文档中读取最新的计数器值。
  2. 递增计数器。
  3. 将更新的计数器值写入文档。
  4. 在代码中使用更新的计数器值。

由于此读写更新来自多个客户端,因此您需要为其使用事务。还请注意,客户端现在正在协调密钥生成,因此您将遇到可生成的密钥数量的吞吐量限制。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Firestore文档的自动生成的ID与使用自定义ID

如何为主键列创建自定义的自动生成的ID号?

在Flutter Cloud Firestore中设置自定义文档ID

如何为自定义optin表单制作自动回复电子邮件

如何为ID中的类自定义CSS

如何为markdown中的标题提供自定义ID?

如何将具有文档ID的自定义对象设置为扑扑中的Firestore中的集合?

如何为 UIPageViewControllerDelegate 制作自定义类?

如何为以下布局制作自定义视图?

Swift-如何为UITableView制作自定义标题?

如何为自定义选择制作下拉 CSS 动画?

如何为Chart.js图形中的每个水平条制作自定义stepSize

Flutter Firestore使用自定义ID添加新文档

如何将具有自定义ID的文档添加到Firestore

如何在Swift上将具有自定义ID的文档添加到Firebase(Firestore)

在Firestore中为文档ID的自定义对象建模的最佳方法是什么?

如何为 Blacklight 中的文档标题添加自定义逻辑?

如何为单击的文档获取自动生成的 id

如何制作自定义灯箱以自动播放动画

如何在自动制作中编写自定义的静音规则?

如何为MAAS生成CentOS的自定义映像

如何为 Facebook 爬虫生成自定义图像?

(Swift 4) 如何在 firebase 中生成自定义自动 ID?

如何使用firebase firestore flutter的自动生成的ID删除集合中的特定文档?

如何自定义Enterprise Architect生成的文档块?

如何为Flutter ListView中的每个项目提供自定义(ID ||键)?

如何自定义自动生成的 django 表单?

如何在文档中定义自定义CSS?

SQL Server中的自定义自动生成的列