android - How can I store the user number like this (1,2,3...)?
问题描述
When a new user signs up, there should be a property named userNo. which should be increased by 1 in each document, so that it would be easy to pick random users from db using that userNo. Basically, like each document holds a User number similar to Uid but not like Afhghdfh4hk545, it should be like userNo.23 and so one. If a new user signs up its userNo. should be 24. Here is what I have tried.
Stream dummy =
await FirebaseFirestore.instance.collection('users').snapshots();
var doclength = await dummy.length;
var userNo = (dummy == null || dummy == 0) ? 1 : doclength;
FirebaseFirestore.instance
.collection('users')
.doc(currentUser.uid)
.update({'userNo': userNo});
解决方案
好的,您需要一个“元文档”,其中包含一个名为“next_user_number”的字段。
创建新用户后,您检查该字段上的号码并将其用作最新用户的“UserNo”。
之后,将“元文档”中的“next_user_number”增加 1。(此处您要使用 FieldValue 增量 - 搜索“firestore 增量”以了解如何操作。)
但是...要绝对确保即使在两个用户同时注册或其他容易出错的情况下也能正常工作,请确保您使用“批量写入”。
批量写入意味着两个操作一起完成,因此递增“next_user_number”和使用正确的“UserNo”编号创建新用户都是准确的。(搜索“firesotre 批量写入”以了解更多信息)。
推荐阅读
- c# - WPF 简单图库
- reactjs - 使用钩子时 Jest/Enzyme 测试抛出错误
- html - 需要 Google 表单上的简单 HTML
- dialogflow-es - 对话流触发 Web 实现的回退
- java - 如何在foreach循环java中返回具有特定字段(函数?)最小值的对象
- ignite - 在客户端节点上对消息使用 localListen 时,哪个线程池用于执行?
- visual-studio - 在 Visual Studio 扩展中获取当前数据库连接
- amazon-web-services - Amplify 的 completeNewPassword 方法为用户数据抛出 TypeError
- python - 如何修复 pyspark 到 elasticsearch 损坏记录问题
- assembly - NASM x86_64 printf 第 7 个参数