我想从Firebase子集合中删除文档。我试图通过以下方式做到这一点:
firestore.collection('categories').doc(categoryId).collection('books').doc(bookId).delete();
它不起作用。
但是,我可以从集合中删除文档:
firestore.collection('categories').doc(categoryId).delete();
我是否忘记了什么?它应该如何运作?
更新:
const firebase = require('../firebase/firebaseAdmin');
const firestore = firebase.firestore();
module.exports = {
removeBookFromCategory: (categoryId, bookId) => (
firestore
.collection('categories')
.doc(categoryId)
.collection('books')
.doc(bookId)
.delete()
),
};
我在这里有正确的ID,但我收到500错误:
错误:参数“documentPath”不是有效的ResourcePath。路径必须 是一个非空字符串。
答案 0 :(得分:3)
删除具有关联子集的文档时,不会删除子集。它们仍可通过参考访问。 执行时,
firestore.collection('categories').doc(categoryId).collection('books').doc(bookId).delete();
它会删除该文件。但它不会删除子集合。如果要删除子集,则必须手动完成。 请参阅here
答案 1 :(得分:1)
我可能回答得太晚了,但是我想通了。 如果您的数据库具有以下方案: rootCollection->文档->子集合-> documentInsideSubCollection
您可以使用以下代码段删除子集合内的文档:
firestore.collection(rootCollection)
.doc(documentName)
.collection(subCollectionName).ref
.where(field, "==", something)
.onSnapshot(snapshot => snapshot.forEach(result => result.ref.delete()));