gpt4 book ai didi

firebase - 如何在firestore集合中生成并保证独特的值(value)?

转载 作者:行者123 更新时间:2023-12-02 03:09:00 25 4
gpt4 key购买 nike

假设我们在 firestore 中有一个 order 集合,其中每个订单都需要有一个唯一的可读随机订单号,假设为 8 位数字:

{
orderNumber: '19456734'
}

因此,对于每个传入订单,我们都希望生成这个唯一的编号。 firestore 中建议使用什么方法来确保没有其他文档正在使用它?

注意:一种解决方案是在保存之前查询现有文档,但这在多个订单同时到达的并发场景中不起作用(?)。

最佳答案

保证某个值在集合中唯一的最简单方法是使用该值作为该集合中文档的键/ID。由于键/ID 根据定义在其集合中是唯一的,因此这隐式地强制执行您的要求。

生成唯一 ID 的唯一内置方法是 calling the add() method ,它为新文档生成一个 UUID。如果您不想使用 UUID 来识别您的订单,则必须推出自己的机制。

两种最常见的方法:

  1. 生成一个唯一的号码并检查它是否已被占用。当然,您可以在事务中执行此操作,以确保没有两个实例可以声明相同的 ID。

  2. 保留您所分发的最新 ID 的全局计数器(通常在众所周知位置的文档中),然后在事务中读取-增量-写入该计数器以获取任何新的 ID文档。这通常是其他数据库对其内置自动 ID 字段所做的操作。

关于firebase - 如何在firestore集合中生成并保证独特的值(value)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58213316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com