【问题标题】:How to delete a document that has a subdocument in firestore database?如何删除在 Firestore 数据库中有子文档的文档?
【发布时间】:2020-06-14 05:10:11
【问题描述】:

如何删除firestore数据库中有子文档的文档?

这里是集合结构

我要删除文档doc("3F0SezA3")

我在下面尝试了这些,但都没有工作,我得到了console.log('deleted'),但在数据库中,文档仍在显示

firebase.firestore()
    .collection("users")
    .doc("3F0SezA3").delete()
    .then(function () {
                console.log('deleted');
              }, function (error) {
                console.error('Delete Error', error);
              });
 firebase.firestore()
.collection("users").doc("3F0SezA3")
.collection("movives").doc("asdrftgyqweAsdghj120a").delete()
.then(function () {
                console.log('deleted');
              }, function (error) {
                console.error('Delete Error', error);
              });

【问题讨论】:

  • 您看到什么表明文档没有被删除?您是否在每次删除时检查错误?请编辑问题以更详细地解释。
  • 没有错误被抛出注意正在发生@DougStevenson
  • 您的代码没有显示使用 delete() 返回的承诺进行的任何错误处理。
  • 能否包含您的数据库的结构?
  • “如何删除在 Firestore 数据库中有子文档的文档”到底是什么意思?您要选择子文档并删除父文档吗?或者,您想删除父文档然后删除子文档?

标签: javascript firebase google-cloud-firestore


【解决方案1】:

如果要同时删除两个文件,最好使用batched write,如下:

var batch = firebase.firestore().batch();

var parentRef = firebase.firestore()
    .collection("users")
    .doc("3F0SezA3");
batch.delete(parentRef);

var childRef = parentRef
    .collection("movives")
    .doc("asdrftgyqweAsdghj120a");
batch.delete(childRef);

batch.commit()
.then(function () {
    console.log("Docs deleted")
})
.catch(function (error) {
    console.log(error)
});

【讨论】:

  • 嗨@RenaudTarnec 我怎么能单独删除这部分firebase.firestore().collection("matches").doc("3F0SezA3");,我试过这个firebase.firestore().collection("matches").doc("3F0SezA3").delete() .then(function () { console.log("Docs deleted") }) .catch(function (error) { console.log(error) }); 但它不起作用
  • 嗨,你尝试的应该正常工作。你有什么错误吗?
  • 好吧,我想知道的是如何删除一个包含超过 100 个子文档的文档,这些子文档都有动态 ID @RenaudTarnec
  • 由于Firestore中的查询是浅层的,所以需要把这个Document的子集合中的所有子文档都查询一遍,然后删除。另请参阅:firebase.google.com/docs/firestore/solutions/delete-collections
  • 谢谢,你能告诉我我必须使用什么路径function deleteAtPath(path) {}来启动服务器端删除@RenaudTarnec
猜你喜欢
  • 2020-09-17
  • 1970-01-01
  • 2018-11-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-28
  • 1970-01-01
  • 2020-09-01
  • 1970-01-01
相关资源
最近更新 更多