如何检查JS中的firestore(而不是文档)中是否存在集合

问题描述 投票:0回答:3

Hoi,我想使用 React javascript 检查 Firestore 中的集合是否已存在,无论它是否为空。我试过:

if (collection(db, ref)) // is always true somehow

有什么想法吗?谢谢!

javascript reactjs firebase google-cloud-platform google-cloud-firestore
3个回答
1
投票

SDK 中没有可用的功能可以帮助您检查特定集合是否存在。仅当集合至少包含一个文档时,该集合才会开始存在。如果集合不包含任何文档,则该集合根本不存在。话虽如此,检查集合是否包含文档是有意义的。在代码中,它应该看起来像这样简单:

const snapshot = await query(collection(db, yourRef), limit(1));
if (snapshot.empty) {
  //The collection doesn't exist.
}

需要提及的一件事是,我使用了对

limit(1)
的调用,因为如果集合包含文档,那么我们会限制结果,以便我们可以 阅读一份文档。但是,如果馆藏不存在,则仍有一份已阅读的文档需要付费。因此,如果上述查询没有结果,根据关于 Firestore 定价的官方文档,它说:

最低查询费用

对于您执行的每个查询,最低收费为读取一个文档,即使查询没有返回结果。


0
投票

您需要尝试从集合中获取并查看是否返回任何内容:

const snap = await query(collection(db, ref), limit(1));
if (snap.empty) {
  // no docs in collection
}

0
投票

您必须从数据库中取出集合并检查它是否有超过 0 个文档。甚至,如果集合不存在,也会返回0。

const db = firebase.firestore();
db.collection("YOUR COLLECTION NAME").get().then((res) =>{
     if(res.size==0){
          //Collection does not exist
     }else{
          //Collection does exist
     }
© www.soinside.com 2019 - 2024. All rights reserved.