如何获取Firestore为新创建文档自动分配的唯一随机ID?
实现方法
你可以在调用set写入数据前,先获取自动生成的文档引用,直接从引用中读取ID即可。Firebase客户端SDK会在本地生成全局唯一的文档ID,不需要和服务端交互,不会出现重复问题,完全符合你的需求。
修改后的示例代码如下:
val postCollections = db.collection("posts") // 调用无参document()生成带唯一ID的文档引用,仅本地操作无网络请求 val newPostRef = postCollections.document() // 直接读取自动生成的ID val newPostId = newPostRef.id val newPost = Post(text, user, currentTime) // 向该文档写入数据 newPostRef.set(newPost)
如果你习惯使用add()方法直接添加文档,也可以在写入成功的回调中获取ID:
val newPost = Post(text, user, currentTime) postCollections.add(newPost) .addOnSuccessListener { documentReference -> val newPostId = documentReference.id // 此处执行需要用到ID的后续逻辑 }
两种方案的区别:
- 第一种方案可以提前拿到ID,不需要等待写入操作完成,适合需要提前将ID关联到其他逻辑的场景
- 第二种方案需要等待写入服务端成功后才能拿到ID,适合必须确认数据写入成功才使用ID的场景
内容的提问来源于stack exchange,提问作者Rehan
相关产品推荐
相关产品推荐

