因此,我的任务是创建通过应用程序注册的人员列表,以提供带有序列号的 ID,例如 ID 如下所示:
PL0000001,PL0000002,PL0000003,PL0000004,PL0000005,PL0000006
我认为很容易做到,要创建一个新ID,只需计算成员部分中有多少个孩子,然后+ 1,然后瞧,新ID创建了。
但我突然意识到,如果
PL0000003
然后删除他的帐户,那么新成员的列表将如下所示:PL0000001,PL0000002,PL0000004,PL0000005,PL0000006
并且通过使用我的算法,代码将只计算孩子的数量,现在是5, + 1,将变成 6,但 PL0000006
已经存在。这会导致双重 ID。
我建议他们使用 RealtimeDatabase 的
.push()
功能,然后将 .key
作为会员 ID。但他们坚持以序列号作为 ID 模式。
如果每次有人注册时我都会读取每个会员的 ID 以检查是否有遗漏的 ID 号,当有数千名会员时,这将是昂贵的。
如何检查更便宜的解决方案中是否缺少
PL0000003
?
谢谢。
实现这样的顺序计数器的正常方法是将您在数据库中某处发出的最后一个值存储起来。
如果这样做,获取新节点的序列号的步骤将变为:
由于您现在有一个序列计数器事务,并且它的值只会增加,因此两个用户不可能获得相同的序列号。