[英]Firestore v9 create/update subcollection
我正在尝试在 firestore v9 中创建一个调用,如果不存在数据,它将创建一个包含数据的子集合,或者如果存在则更新,但这似乎是不可能的。 只有 setDoc 似乎支持合并,而 setDoc 似乎不支持子集合(只有 addDoc)。 有没有办法做到这一点? 如果这不能直接完成,我如何检查 v9 中是否存在子集合并更新它?
下面的代码在 colRef 上产生类型错误,并在执行时产生 firebase 错误
const db = getFirestore();
const docRef = doc(collection(db, 'Collection'), userId);
const colRef = collection(docRef, "Subcollection");
await setDoc(colRef, subcollectionData, { merge: true });
firebase 错误
[未处理的 promise 拒绝:FirebaseError:预期类型“Sa”,但它是:自定义 Ca 对象]”
似乎您对docRef
、 colRef
和setDoc
的语法有误
如果您使用的是 Firebase v9,则它不应该有该collection
,因为您已经在引用该集合,并且对于colRef
它应该是通过您的subCollection
的路径。
它仍然支持使用setDoc
的子集合,您只需配置代码即可。
setDoc
的示例代码:
const subColRef = doc(db, 'collectionName', 'documentID','subCollectionID', 'subCollectionName');
await setDoc(subColRef, subcollectionData, { merge: true });
addDoc
的示例代码:
const subcollectionData = {test:'test'};
const subColRef = collection(db, 'collectionName', 'documentID','subCollectionID');
await addDoc(subColRef, subcollectionData, { merge: true });
您可以参考此链接了解语法 Web 版本 9(模块化)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.