You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 07:30:05