【发布时间】:2023-02-14 01:14:36
【问题描述】:
我的嵌套集合如下所示:
User--> drugs--> drugsTime
我想更新子子集合 (drugsTime) 中文档中的数据 但是我不知道药物文件 ID 和药物时间文件 ID 所以我做了以下事情:
ConfirmDrugTaken(DateTime d) async {
final User? user = FirebaseAuth.instance.currentUser;
final _uid = user?.uid;
var drugID="";
// Get the user's sub-collections in Firestore
final QuerySnapshot<Map<String, dynamic>> querySnapshot =
await FirebaseFirestore.instance
.collection("users")
.doc(_uid)
.collection('drug').where("drugName", isEqualTo: widget.title)
.get();
querySnapshot.docs.forEach((element) async {
drugID=element.id;
});
final QuerySnapshot<Map<String, dynamic>> querySnapshot2 =FirebaseFirestore.instance
.collection("users")
.doc(_uid)
.collection("drug")
.doc(drugID).collection("drugDates").where('time',isEqualTo: d).get() as QuerySnapshot<Map<String, dynamic>>;
querySnapshot2.docs.forEach((element) async {
FirebaseFirestore.instance
.collection("users")
.doc(_uid)
.collection("drug")
.doc(drugID).collection("drugDates").doc(element.id).update( {'isTaken': true});
});
}
但出现此错误:
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: type 'Future<QuerySnapshot<Map<String, dynamic>>>' is not a subtype of type 'QuerySnapshot<Map<String, dynamic>>' in type cast
E/flutter (17976): #0 _drugSetupState.ConfirmDrugTaken (package:taafi_application_v1/pages/drug_setup.dart:215:79)
E/flutter (17976): <asynchronous suspension>
E/flutter (17976): #1 _drugSetupState.setAlarm.<anonymous closure>.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:taafi_application_v1/pages/drug_setup.dart:112:20)
E/flutter (17976): <asynchronous suspension>
是否有另一种方法可以在不知道 id 的情况下进入子子集合,或者我该如何解决这个错误?
请帮忙
【问题讨论】:
标签: flutter firebase dart google-cloud-firestore collections