我试图遍历文档中的集合(使用for循环),并从每个集合文档中获取和捕获数据。当我第一次尝试这样做时,我使用流来侦听数据,但是由于异步函数,该函数将始终返回空数组。
我的代码
for (final day in daysRunOn) {
databaseReference
.collection('users')
.document(user.uid)
.collection(day)
.snapshots()
.documents((snapshot) {
});
}
This post建议我不要使用流,因此将其删除。我现在尝试运行此文件,但是.documents部分上一直出现错误,提示“未为类型'Stream'定义'documents'方法。”但我不明白这仍然是怎么回事。
堆栈溢出的建议方法
double queryValues() async {
total = 0.0;
docs = await Firestore.instance
.collection('myCollection')
.snapshots()
.documents((snapshot);
docs.forEach((doc) => this.total += doc.data['amount']));
debugPrint(this.total.toString());
return total;
}
任何帮助将不胜感激!
答案 0 :(得分:0)
尝试此代码
List<String> daysRunOn = ['day1','day2','...'];
int x = 0;
double total = 0.0;
Future<double> getTotal() async {
if(x == 0) total = 0.0;
var querySnapshot = await
Firestore.instance.collection('users/${user.uid}/${daysRunOn[x]}').getDocuments();
querySnapshot.documents.forEach((doc) => total += doc.data['amount']);
if(x == daysRunOn.length-1){
// the loop has finished
x = 0;
debugPrint(total.toString());
return total;
} else {
x++;
return getTotal();
}
}
答案 1 :(得分:0)
尝试这样的事情:
getDocs() async {
total = 0.0;
snapshot = await Firestore.instance
.collection('myCollection')
.snapshots();
docs = snapshot.data.documents;
docs.forEach((doc) => this.total += doc.data['amount']));
debugPrint(this.total.toString());
return total;
}