作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我们在 firestore 中有一个 order
集合,其中每个订单都需要有一个唯一的可读随机订单号,假设为 8 位数字:
{
orderNumber: '19456734'
}
因此,对于每个传入订单,我们都希望生成这个唯一的编号。 firestore 中建议使用什么方法来确保没有其他文档正在使用它?
注意:一种解决方案是在保存之前查询现有文档,但这在多个订单同时到达的并发场景中不起作用(?)。
最佳答案
保证某个值在集合中唯一的最简单方法是使用该值作为该集合中文档的键/ID。由于键/ID 根据定义在其集合中是唯一的,因此这隐式地强制执行您的要求。
生成唯一 ID 的唯一内置方法是 calling the add()
method ,它为新文档生成一个 UUID。如果您不想使用 UUID 来识别您的订单,则必须推出自己的机制。
两种最常见的方法:
生成一个唯一的号码并检查它是否已被占用。当然,您可以在事务中执行此操作,以确保没有两个实例可以声明相同的 ID。
保留您所分发的最新 ID 的全局计数器(通常在众所周知位置的文档中),然后在事务中读取-增量-写入该计数器以获取任何新的 ID文档。这通常是其他数据库对其内置自动 ID 字段所做的操作。
关于firebase - 如何在firestore集合中生成并保证独特的值(value)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58213316/
我是一名优秀的程序员,十分优秀!