在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
相关产品推荐
相关产品推荐

