海,我想检查,使用Reactjavascript,如果在Firestore中的集合已经存在,无论它是否为空或不.我试过:
if (collection(db, ref)) // is always true somehow
有什么主意吗?谢谢!
1zmg4dgp1#
您需要尝试从集合中提取并查看是否返回了任何内容:
const snap = await query(collection(db, ref), limit(1)); if (snap.empty) { // no docs in collection }
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的官方文档,它说:
limit(1)
最低查询费用
对于您执行的每个查询,最低收费为读取一个文档,即使查询未返回任何结果。
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 }
3条答案
按热度按时间1zmg4dgp1#
您需要尝试从集合中提取并查看是否返回了任何内容:
ulydmbyx2#
SDK中没有任何函数可以帮助你检查某个集合是否存在。只有当一个集合包含至少一个文档时,它才会开始存在。如果一个集合不包含任何文档,那么这个集合就根本不存在。所以,检查一个集合是否包含文档是有意义的。在代码中,它应该看起来像这样简单:
有一点需要说明的是,我使用了对
limit(1)
的调用,因为如果集合包含文档,那么我们会限制结果,这样我们就可以只支付一次文档读取。然而,如果集合不存在,仍然有一次文档读取需要支付。因此,如果上面的查询没有产生结果## Heading ##t,根据Firestore pricing的官方文档,它说:最低查询费用
对于您执行的每个查询,最低收费为读取一个文档,即使查询未返回任何结果。
5kgi1eie3#
你必须从数据库中取出集合,并检查它是否有超过0个文档。即使集合不存在,它也会返回0。