再次删除带有文档和集合的集合(firestore react native)

Posted

技术标签:

【中文标题】再次删除带有文档和集合的集合(firestore react native)【英文标题】:delete a collection with document and collection again inside (firestore react native) 【发布时间】:2021-11-23 02:08:19 【问题描述】:

我无法在 Firestore 上删除

这是我的删除

var chatId = route.params.number; // +639266825843
var docRef = firestore().collection('ChatRoom').doc(chatId).collection('messages');
docRef.doc(chatId).delete();

但每次我尝试删除时都没有任何反应。完全没有错误。

这就是我设置该集合的方式

firestore().collection('ChatRoom')
.doc(id)
.collection('messages')
.add(...myMsg, createdAt:firestore.FieldValue.serverTimestamp())

【问题讨论】:

【参考方案1】:

如果要删除messages(子)集合的所有文档,则需要查询集合并删除每个文档,例如使用Promise.all() 或使用batched write(仅包含删除)

  var chatId = route.params.number; // +639266825843
  var colRef = firestore()
    .collection('ChatRoom')
    .doc(chatId)
    .collection('messages');

  colRef.get().then((querySnapshot) => 
    Promise.all(querySnapshot.docs.map((d) => d.ref.delete()));
  );

QuerySnapshotdocs 属性返回QueryDocumentSnapshots 的数组。


此外,查看您的+639266825843 文档是如何以斜体 字体显示的:这意味着,在控制台中,该文档仅作为一个或多个子的“容器”出现-collection(s) 但它不是“真正的”文件。它不存在,因为您从未创建它,您只在其子集合之一中创建了文档。更多详情here.

【讨论】:

这会只删除带有+639266825843 的集合及其子集合吗?因为其他人也会使用ChatRoom 收藏先生。 它将删除“doc”+639266825843的子集合messages中的所有文档。 会试试这个先生。谢谢。 我的问题解决了。我想知道为什么它不能删除集合,现在我明白了。谢谢。

以上是关于再次删除带有文档和集合的集合(firestore react native)的主要内容,如果未能解决你的问题,请参考以下文章

在 Firestore 中使用 Angular 删除集合中的文档

Firestore:获取带有和不带有子集合数据的集合[重复]

删除 Firestore 集合中的所有文档

如何使用 Flutter 在 Firestore 中删除集合中的所有文档

尝试从 Firestore 获取和更新集合时发现“文档集合中未定义”

在 Firestore 中删除集合 - Flutter/Android