firebase 如何使用Firestore和Google Cloud进行顺序编号?

0vvn1miw  于 2023-11-21  发布在  Go
关注(0)|答案(2)|浏览(216)

我正在使用Firestore在Google Cloud上构建一个订单系统。我有一个Firestore数据库和多个按位置处理订单的服务器。每个分支每天从1开始订单,每天重置。
如何使用Firestore和Google Cloud设置顺序编号?有任何代码示例或提示吗?实施应该始终是顺序的,没有间隙。
注意:需要订单号,订单号将保存在除订单收集之外的其他收集中

bnlyeluc

bnlyeluc1#

关于顺序ID的限制是指文档ID。如果您想将订单号存储为文档中的数字字段,您可以继续这样做,但请注意,这种解决方案根本不实用。为什么?这是因为为了增加订单号,您必须在写入新订单号之前先读取最后一个订单号。因此,在Firestore中,你得付一读一写的钱
在我看来,你有最好的选择是存储一个Firestore时间戳字段,每个订单内有precision of nanoseconds.这意味着,你可以根据该字段订购订单,并实现相同的结果.这也意味着,你不必检查订单号或使用任何交易.

编辑:

如果你真的需要这个序列号,那么我建议你将它存储在Firebase Realtime Database中的一个模式中,如下所示:

db
|
--- orderNumber: 25

字符串
要增加订单号,您可以简单地使用increment,这是一个原子操作。要重置计时器,您可以使用Cloud Scheduler,它允许您将订单号的更新计划为零。
在这种情况下,由于实时数据库中的写操作是免费的,所以没有什么需要支付的,而当您读取时,您只需要为阅读一个数字付费,这表示带宽非常小。

flvlnr44

flvlnr442#

不建议Firestore使用顺序ID,有一篇关于此主题的文章和一些建议:Firestore生成的密钥与集合中的自定义密钥?

相关问题