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

在React JS中使用Firebase v9创建文档时如何将自动生成ID存入projectId字段

实现方案

该需求可实现,核心思路是拆分addDoc的内置执行逻辑,提前拿到Firestore自动生成的文档ID,再一次性写入数据,仅需1次数据库写操作,是最优方案。

实现步骤

  • 首先为projects集合生成一个带自动唯一ID的空文档引用,ID由客户端本地生成,无需和服务端交互,不存在重复冲突问题
  • 从文档引用中取出ID,作为projectId字段的值和其他业务字段一起写入文档

代码示例

import { collection, doc, setDoc } from "firebase/firestore";

// 生成带自动ID的文档引用
const projectDocRef = doc(collection(db, "projects"));

// 写入完整数据,包含自动生成的projectId
await setDoc(projectDocRef, {
  name: project,
  uid: currentUser,
  projectId: projectDocRef.id
});

可选方案(不推荐)

如果坚持使用addDoc实现,可在写入完成后调用update补充写入projectId,但需要2次数据库写操作,会额外消耗写入配额:

import { addDoc, collection, updateDoc } from "firebase/firestore";

const projectDocRef = await addDoc(collection(db, "projects"), {
  name: project,
  uid: currentUser
});
// 第二次写入补充projectId
await updateDoc(projectDocRef, {
  projectId: projectDocRef.id
});

内容的提问来源于stack exchange,提问作者iandev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:36:03