如何解决Flutter Firebase全局自动增量值并在文档字段中检索
我是Firebase Flutter的新手。我正在开发一个移动应用程序,以便与其他人共享书籍。
在Firebase Firestore中,
- 我有“用户”集合,其中包含所有具有唯一ID的用户数据
- 我有一个'books'集合,其中包含自动创建的具有唯一ID的所有书籍数据
- 我也有单个文档的“全局”集合,其中包含一个名为“ bookcount”的整数字段。
- 用户可以拥有许多书籍。
现在,我想为书创建另一个唯一的id字段。想法是拥有简单的整数id。 一种方法是获取书籍清单并找到长度(计数),并在创建新记录时加1。我已经排除了这种方法,就像许多用户同时使用一样,我认为这可能导致重复的ID。
因此,我创建了另一个具有单个文档和字段名称帐簿数量的全局集合。哪个在图书收藏中保留图书数量(笔数)。因此,每次将书添加到馆藏时,都会增加书数并将此值用作书的简单唯一ID。由于用户可以在保存之前丢弃该条目,所以该记帐本不能代表实际的书,这可以,因为我只需要一个简单的唯一ID。
Lennon
现在这可行。好一点,我们能做得更好吗?在这里有两个部分,首先是增加账面价值,然后再获取它。
- 我们可以一口气做到吗?
如果我尝试在返回值时真正快速连续调用此方法,则可能会跳过几个数字。我已从一个按钮调用此按钮,并尝试尽快按下。我认为计数器增加但它会返回 同一号码几次。然后再次按下时跳过一些。例如1,2,3,4,8,9,10,...。所以在计数器4,我尝试多次按下按钮。我想知道当多个用户同时添加多本书时,这种行为会如何。
- 我该如何解决?
请帮助,谢谢。
解决方法
我认为问题在于,await globalData.document('SomeHardcodedID').updateData
不会产生返回值(无效),一旦触发的下一个调用也执行,就可以了,在大多数情况下都可以。
但是,如果bookId在很短的时间内(毫秒)被调用了几次,则会在FieldValue.increment(1)
处理之前产生该数字。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。