繁体   English   中英

Firestore v9 创建/更新子集合

[英]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 对象]”

似乎您对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(模块化)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM