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

pxiryf3j  于 2023-01-05  发布在  其他
关注(0)|答案(3)|浏览(148)

海,我想检查,使用Reactjavascript,如果在Firestore中的集合已经存在,无论它是否为空或不.我试过:

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

有什么主意吗?谢谢!

1zmg4dgp

1zmg4dgp1#

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

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

ulydmbyx2#

SDK中没有任何函数可以帮助你检查某个集合是否存在。只有当一个集合包含至少一个文档时,它才会开始存在。如果一个集合不包含任何文档,那么这个集合就根本不存在。所以,检查一个集合是否包含文档是有意义的。在代码中,它应该看起来像这样简单:

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

有一点需要说明的是,我使用了对limit(1)的调用,因为如果集合包含文档,那么我们会限制结果,这样我们就可以支付一次文档读取。然而,如果集合不存在,仍然有一次文档读取需要支付。因此,如果上面的查询没有产生结果## Heading ##t,根据Firestore pricing的官方文档,它说:

最低查询费用

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

5kgi1eie

5kgi1eie3#

你必须从数据库中取出集合,并检查它是否有超过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
     }

相关问题