我试图同时获取用户文档及其子集合。但是我发现在查询中是不可能的。因此,我决定从另一个角度解决这个问题。
我有一个getRelative()
的吸气剂,它返回了Stream<Relative>
。
Stream<Relative> get getRelative async* {
List<Patient> patientList;
patientList = await getPatientCollection
.forEach((element) => element.patients)
.then((value) => value);
yield* usersCollection
.document(_userEmail)
.snapshots()
.map((snapshot) => _relativeDataFromSnapshot(snapshot, patientList));
}
getPatientCollection()
是另一个getter方法,它返回Stream<PatinetList>
。我不会详细说明吸气剂。因为效果很好。
问题是当我得到Stream<PatientList>
时,我得到了Stream
。因此,为了将其转换为Future
,我使用了forEach
方法。而且它也可以正常工作。我可以看到element.patients
不为空。我可以看到它的内部及其返回类型List<Patient>
。
但是当我调试它时,forEach()
完成其工作后,我意识到它返回null。并且patientList
变为空。那会引起问题。
getPatientCollection
)的情况下,有没有更好的方法来获取子集合?答案 0 :(得分:1)
Stream.forEach
是Stream
的{{1}}等效项(返回List.forEach
)。它用于对每个元素进行一些操作,而不是用于返回新的集合。如果要将void
转换为Stream<T>
,可以执行await stream.toList()
。