[英]How to delete a doc from a subcollection using multiple filters in FlutterFlow?
我正在使用 FlutterFlow,我的 firestore 结构如下:
users
contacts
contact_history
events
所有都是“用户”的子集合。 我的规则设置为只有用户才能查看/编辑/删除他们的数据。
给定一组字段值“eventUID”和“contactUID”,我正在尝试从“contact_history”子集合中删除特定文档,但查询似乎是空的,它永远不会删除文档。
我正在写信给控制台以检查值和参数是否正确传递但 myLen 和 iter 保持为零。 我究竟做错了什么? 我是否需要以某种方式引用“用户”集合?
Future actDelEventContactHist(
String? myEventUID,
String? myContactUID,
) async {
int iter = 0;
int myLen = 0;
print('Begin: actDelEventContactHist -------');
print('myEventUID: $myEventUID');
print('myContactUID: $myContactUID');
WriteBatch batch = FirebaseFirestore.instance.batch();
FirebaseFirestore.instance
.collection('contact_history')
.where('contactUID', isEqualTo: myContactUID)
.where('eventUID', isEqualTo: myEventUID)
.get()
.then((querySnapshot) {
myLen = querySnapshot.docs.length;
print('myLen: $myLen');
querySnapshot.docs.forEach((document) {
iter++;
batch.delete(document.reference);
});
return batch.commit();
});
print('iter: $iter');
print('Docs deleted');
print('END: actDelEventContactHist -------');
好的,我想通了。 我必须包括“用户”集合,因为它是父集合。 为此,我必须导入 firebase_auth package。下面的解决方案...
import 'package:firebase_auth/firebase_auth.dart';
Future actDelEventContactHist(
String? myEventUID,
String? myContactUID,
) async {
// Add your function code here!
int iter = 0;
int myLen = 0;
print('Begin: actDelEventContactHist -------');
print('myEventUID: $myEventUID');
print('myContactUID: $myContactUID');
final myId = FirebaseAuth.instance.currentUser!.uid;
WriteBatch batch = FirebaseFirestore.instance.batch();
FirebaseFirestore.instance
.collection('users')
.doc(myId)
.collection('contact_history')
.where('contactUID', isEqualTo: myContactUID)
.where('eventUID', isEqualTo: myEventUID)
.get()
.then((querySnapshot) {
myLen = querySnapshot.docs.length;
print('myLen: $myLen');
querySnapshot.docs.forEach((document) {
iter++;
batch.delete(document.reference);
});
return batch.commit();
});
print('iter: $iter');
print('Docs deleted');
print('END: actDelEventContactHist -------');
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.