我已经查看了What is Firestore Reference data type good for?,但我没有看到任何地方提到当引用的文档被删除时引用字段/链接会发生什么,因为我也想自动删除引用文档。
所以我的问题是参照字段变成null
,还是要手工查询被参照单据是否还存在?
我想后一种情况将涉及大量的读取操作。
我认为前一种情况是这样的
ref.addSnapshotListener((value, error) -> {
for (QueryDocumentSnapshot queryDocSnap: value){
DocumentReference docRef = queryDocSnap.get("ref");
if (docRef == null){
// delete queryDocSnap
} else{
// do something }
}
});
1条答案
按热度按时间hc2pp10m1#
参照字段是否为空,还是需要手工查询被参照单据是否还存在?
不会。您必须自己检查。因此,如果您有一个引用指向一个被删除的文档,该引用不会变为空。没有内置的机制来实现这一点。要克服这种情况,在删除特定文档之前,请检查其他文档中是否存在相应的引用。如果存在,则将该字段设置为空,否则,不采取任何操作。
我想后一种情况将涉及大量的读取操作。
您必须支付一定数量的读取操作,其数量等于搜索特定引用存在的查询所返回的文档数。例如,如果特定引用存在于10个文档中,则您必须支付10次读取操作+ 10次写入操作,因为您需要将该字段设置为空。