如何向Firestore的嵌套集合network中添加数据?
解决Firestore子集合添加条目的问题
你的问题出在Firebase v9+模块化SDK的用法上——文档引用(DocumentReference)本身没有collection()方法,得用SDK提供的顶层collection()函数来创建子集合引用。
正确获取子集合并添加条目的步骤:
- 先拿到用户文档的引用(即你代码里的
docToUpdate) - 用
collection()函数,把文档引用和子集合名network传进去,得到子集合的引用 - 用
addDoc()自动生成ID添加条目,或者用doc()+setDoc()自定义ID添加
完整代码示例:
import { collection, doc, addDoc, setDoc } from "firebase/firestore"; // 原有的用户文档引用 const captureCol = collection(firestore, 'users'); const docToUpdate = doc(captureCol, 'id123'); // 你原代码里的`myCol`应该是`captureCol`,大概率是笔误 // 获取network子集合的引用 const networkCol = collection(docToUpdate, 'network'); // 方式1:自动生成ID添加条目 const newNetworkDoc = await addDoc(networkCol, { // 填入你的network条目数据,示例: name: '测试网络', createdAt: new Date() }); console.log('新增的network文档ID:', newNetworkDoc.id); // 方式2:自定义ID添加条目 const customNetworkDoc = doc(networkCol, '自定义ID'); await setDoc(customNetworkDoc, { name: '自定义ID网络', createdAt: new Date() });
报错原因说明:
Firebase v9+把所有操作都改成了顶层函数形式,不再像旧版命名空间SDK那样允许通过文档引用直接调用.collection()方法,必须用collection()函数来创建子集合引用。
内容的提问来源于stack exchange,提问作者coure2011
相关产品推荐
相关产品推荐

