假设我试图删除Firebase Cloud Firestore中一个名为attributes
的集合中的所有文档。
我试着:
const collectionRef = collection(db, 'projectAttributes');
try {
const snapshot = await getDocs(collectionRef)
// Delete each document in the collection
const deletePromises = snapshot.docs.map((doc :any) => doc.ref.delete())
await Promise.all(deletePromises)
return (`Deleted ${deletePromises.length} documents from the 'projectAttributes' collection.`)
} catch (error) {
return(`Error deleting documents: ${error}`);
}
但是我得到delete()
不存在的错误。
我也尝试了这个StackOverflow问题中给出的方法。
db.collection('cities').get().then(querySnapshot => {
querySnapshot.docs.forEach(snapshot => {
snapshot.ref.delete();
})
})
然而,我首先必须将db.collection('cities')
更改为collection(db, 'cities')
,然后传递以下错误Property 'get' does not exist on type 'CollectionReference<DocumentData>'
试图解决这个问题,一切都在走下坡路。
注意
firebase -v
传递11.24.1
npm -v
传递8.11.0
无论如何都不能这样删除快照。此外,它可能与使用地图在TS.我已经尝试和测试了下面的代码。不如试试这个:
import { initializeApp } from 'firebase/app';
import {
getFirestore,
collection,
getDocs,
deleteDoc,
} from 'firebase/firestore';
const collectionRef = collection(db, 'projectAttributes');
const docsArr = [];
try {
const snapshot = await getDocs(collectionRef);
snapshot.forEach(doc => {
docsArr.push(deleteDoc(doc.ref));
});
Promise.all(docsArr).then(() => console.log('documents deleted'));
} catch (error) {
return `Error deleting documents: ${error}`;
}