gpt4 book ai didi

firebase - Firestore 删除文档和引用它的所有文档

转载 作者:IT王子 更新时间:2023-10-29 07:10:02 25 4
gpt4 key购买 nike

这个问题是关于 Firebase (+ Flutter)

是否可以删除一个文档和所有引用它的文档?

假设我有这样的结构:

-users (collection)
- name
- bookmarks ((sub)collection)
- postId
-post (collection)
- userId
- name
- ...

现在如果我删除一个帖子,我想删除所有引用该帖子的书签。 (来自所有用户)。是否有自动方式(来自 RDBMS)。

另一个问题:我如何查询所有帖子并“加入”用户信息。

像这样:

return firestore
.collection("posts")
.orderBy("createdAt")
.snapshots(); // I want to join the userInformation

然后这些嵌套查询是否计入 API 限制?

提前致谢

最佳答案

你必须查询文档,然后批量删除它们。我不使用子集合,我也不打算查找如何查询它们,但是使用根级架构,您可以使用标准的 firestore 删除来删除帖子,并引用 documentID。假设 documentID 与您的“postID”字段相同(如果不是,则重构您的模式)您将:

final WriteBatch _batch = Firestore.instance.batch();

QuerySnapshot _query = await dbUsers.where('postId', isEqualTo: thatDocumentID).getDocuments();

_query.documents.forEach((doc) {
_batch.delete(dbUsers.document(doc.documentID));
});

await _batch.commit();

请注意,一次只能完成 500 个批处理:

https://firebase.google.com/docs/firestore/manage-data/transactions

因此您必须根据需要拆分您的 _batch.commit() 调用。

关于firebase - Firestore 删除文档和引用它的所有文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52048204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com