经过一年多的开发,我已经有了一个相当完善的网站。现在我要打开它进行公开测试,但我需要清除 Firestore 中的所有数据(都是测试数据)。有没有一种简单的方法可以做到这一点,还是我必须手动删除每个条目? (有超过 1000 个条目)。目前我能想到的唯一现实的选择是将 Firebase 项目切换到新项目,但这不是我想做的事情。
解决方案:联系 Firebase 支持后,我得到了运行以下 CLI 命令,这成功了:
// THIS WILL PROMPT CONFIRMATION AND WILL USE ACTIVE PROJECT
firebase firestore:delete --all-collections
// !!! WARNING !!! THIS WILL NOT PROMPT CONFIRMATION AND WILL USE ACTIVE PROJECT
firebase firestore:delete --all-collections -y
请务必小心谨慎,因为 这会擦除您的整个 Firestore 数据库。
根据 OP 和 Firebase 团队的说法,以下 CLI 命令即可解决问题:
// THIS WILL PROMPT CONFIRMATION AND WILL USE ACTIVE PROJECT
firebase firestore:delete --all-collections
// !!! WARNING !!! THIS WILL NOT PROMPT CONFIRMATION AND WILL USE ACTIVE PROJECT
firebase firestore:delete --all-collections -y
为了回答OP的另一个问题,以下是如何一键删除Firestore中的整个集合: Firebase 控制台菜单。您基本上可以单击任何集合左上角的三按钮上下文菜单,然后选择
Delete Collection
。
[发布此内容是为了解决@Nathan的反馈,以便这个热门问题实际上得到官方标记的“答案”]
我使用react和redux-toolkit开发了我的网站,为了清除所有集合,我编写了这段代码。我在此输入中写入集合名称,它会删除集合的所有文档,但我仍然拥有我的集合,因此我的所有数据都消失了,我不需要在代码中进行任何更改
const [collectionName, setCollectionName] = useState("");
<form>
<input type="text" onChange={(e) => setCollectionName(e.target.value)} />
<span
onClick={() => dispatch(deleteDocuments(collectionName))}
>
Delete documents
</span>
</form>
export const deleteDocuments = createAsyncThunk(
"deleteDocuments",
async (collectionName, thunkAPI) => {
try{
console.log(collectionName);
const querySnapshot = await getDocs(collection(db, collectionName));
querySnapshot.forEach(async (testplan) => {
console.log(testplan);
await deleteDoc(doc(db, collectionName, testplan.id));
});
console.log('all docments successfully deleted');
} catch (e){
console.log(e);
}
}
);