Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法从firebase中的多个集合中删除项目_Firebase_Dart_Google Cloud Firestore_Google Cloud Functions - Fatal编程技术网

无法从firebase中的多个集合中删除项目

无法从firebase中的多个集合中删除项目,firebase,dart,google-cloud-firestore,google-cloud-functions,Firebase,Dart,Google Cloud Firestore,Google Cloud Functions,我在firebase中有两个集合,例如A和B。当我将一个项目添加到其中一个集合(例如A)时,它会自动添加到另一个集合B。但当我从集合A中删除一个项目时,它会保留在另一个集合B中 当我从集合A中删除一个项目时,它将保留在另一个集合B中 我无法确定如何使两个集合中的项目都被删除 请帮助。这不是关系数据库。Cascadate更新/删除在关系数据库中是可能的,如Sql、Postgresql、Firebird。。。在无SQL中,文档之间没有任何关系。此外,最好将一些数据克隆到两个或多个文档中,而不是为其

我在firebase中有两个集合,例如A和B。当我将一个项目添加到其中一个集合(例如A)时,它会自动添加到另一个集合B。但当我从集合A中删除一个项目时,它会保留在另一个集合B中

当我从集合A中删除一个项目时,它将保留在另一个集合B中

我无法确定如何使两个集合中的项目都被删除


请帮助。

这不是关系数据库。Cascadate更新/删除在关系数据库中是可能的,如Sql、Postgresql、Firebird。。。在无SQL中,文档之间没有任何关系。此外,最好将一些数据克隆到两个或多个文档中,而不是为其创建单独的文档

但也许您可以通过使用引用类型来实现您想要的?我种了一两次,去看看可能是个好主意。但是,作为描述,它只是一个带有路径/引用的字段,没有魔力

通过:

如果要在删除父文档时删除子集合中的文档,则必须手动执行此操作,如“删除集合”中所示


因此,您要么想重新考虑DB模型,要么必须手动跟踪要删除的每个wlement。

有两种方法:

从客户端使用批写入()


通过向文档添加删除触发器来使用云功能,并在触发时执行对其他文档的删除。考虑到您必须知道应该删除哪些文档,而在应用程序中删除这些文档并不困难()

!无论在何处调用delete函数。请查看链接以获取示例和更多信息。
DocumentReference doc_1_reference = firestore.collection("messages").document(doc_1_uid);
DocumentReference doc_2_reference = firestore.collection("messages").document(doc_2_uid);

final batchWrite = firestore.batch();

batchWrite.delete(doc_1_reference);
batchWrite.delete(doc_2_reference);

await batchWrite.commit();