Firestore v9创建/更新子集合



我正试图在firestore v9中创建一个调用,如果不存在数据,它将创建一个包含数据的子集合,如果存在数据,则进行更新,但这似乎不可能。似乎只有setDoc支持合并,而setDoc似乎不支持子集合(只有addDoc(。有什么办法可以做到这一点吗?如果这不能直接完成,我如何检查v9中是否存在子集合,如果存在,如何更新它?

下面的代码在colRef上产生一个typeerror,在执行时产生一个firebase错误

const db = getFirestore();
const docRef = doc(collection(db, 'Collection'), userId);
const colRef = collection(docRef, "Subcollection");
await setDoc(colRef, subcollectionData, { merge: true });

火球错误

[未处理的承诺拒绝:FirebaseError:应为类型"Sa",但它是:自定义Ca对象]";

似乎docRefcolRefsetDoc的语法错误

如果您使用的是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(模块化(。

最新更新