Hoi,我想使用 React javascript 检查 Firestore 中的集合是否已存在,无论它是否为空。我试过:
if (collection(db, ref)) // is always true somehow
有什么想法吗?谢谢!
SDK 中没有可用的功能可以帮助您检查特定集合是否存在。仅当集合至少包含一个文档时,该集合才会开始存在。如果集合不包含任何文档,则该集合根本不存在。话虽如此,检查集合是否包含文档是有意义的。在代码中,它应该看起来像这样简单:
const snapshot = await query(collection(db, yourRef), limit(1));
if (snapshot.empty) {
//The collection doesn't exist.
}
需要提及的一件事是,我使用了对
limit(1)
的调用,因为如果集合包含文档,那么我们会限制结果,以便我们可以仅 阅读一份文档。但是,如果馆藏不存在,则仍有一份已阅读的文档需要付费。因此,如果上述查询没有结果,根据关于 Firestore 定价的官方文档,它说:
最低查询费用
对于您执行的每个查询,最低收费为读取一个文档,即使查询没有返回结果。
您需要尝试从集合中获取并查看是否返回任何内容:
const snap = await query(collection(db, ref), limit(1));
if (snap.empty) {
// no docs in collection
}
您必须从数据库中取出集合并检查它是否有超过 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
}