Flutter/Dart中如何获取Firestore新增文档的ID?
解决Firestore添加文档后获取自动生成ID的问题
我来帮你搞定这个问题!你当前的写法里,await ...set()返回的是void,所以没法从codeRef里拿到文档ID。而且旧版本的documentID属性确实已经被废弃了,现在有更简洁且官方推荐的做法,还能完美避免ID冲突:
正确步骤:
- 先创建一个文档引用(此时Firestore已经自动生成了唯一的文档ID,完全不用担心冲突)
- 再调用
set方法写入数据 - 最后直接从文档引用中获取ID并添加到列表
完整代码示例:
// 1. 创建文档引用,此时已生成全局唯一ID final docRef = FirebaseFirestore.instance.collection('codes').doc(); // 2. 将数据写入该文档 await docRef.set({ 'name': _codeName, }); // 3. 获取自动生成的ID并添加到目标列表 yourTargetList.add(docRef.id);
原理说明:
Firestore的doc()方法如果不传参数,会立即生成一个全局唯一的文档ID并返回对应的引用——这个ID的生成算法经过优化,冲突概率可以忽略不计。你不需要等到数据写入完成,就能拿到这个ID,既满足了你的需求,又遵循了最新的API规范。
内容的提问来源于stack exchange,提问作者Eind997
相关产品推荐
相关产品推荐

