React中无Firestore文档ID,仅通过名称删除文档的方法
Firestore无文档ID时删除指定文档的方法
你之前的写法有误,deleteDoc仅能接收单个文档引用作为参数,无法直接搭配where条件使用。要删除仅知晓字段值的文档,必须先查询到符合条件的文档,再逐个执行删除操作。
正确的实现代码如下:
const onRemoveSong = async () => { // 构建查询:在对应用户的songs集合中筛选songId匹配的文档 const q = query( collection(db, 'users', user?.email!, 'songs'), where('songId', '==', song.id) ); // 获取查询结果快照 const querySnapshot = await getDocs(q); // 遍历结果,删除每个匹配的文档 querySnapshot.forEach(async (doc) => { await deleteDoc(doc.ref); }); // 可选:添加删除结果提示 if (querySnapshot.empty) { console.log('未找到匹配的文档'); } else { console.log(`成功删除${querySnapshot.size}个文档`); } };
关键步骤说明:
- 用
query()方法结合collection()和where()构建查询规则,精准定位目标文档 - 通过
getDocs()执行查询,获取包含所有匹配文档的快照 - 遍历快照内的文档,借助
doc.ref拿到文档引用,再调用deleteDoc()完成删除
内容的提问来源于stack exchange,提问作者oren
相关产品推荐
相关产品推荐

