`getMatches(String userId)异步{
return StreamBuilder(
stream: Firestore.instance.collection("users")
.document(userId).collection("chosenList").snapshots(),
builder: (context, snapshot) {
return StreamBuilder(
stream: Firestore.instance.collection("users")
.document(userId).collection("selectedList").snapshots(),
builder: (context, snapshot1) {
if(!snapshot.hasData || !snapshot1.hasData) {
return CircularProgressIndicator();
}
for (DocumentSnapshot doc in snapshot.data) {
for(DocumentSnapshot docs in snapshot1.data) {
if(doc.documentID == docs.documentID) {
print(docs.documentID);
}
}
}
});
}
);
}`我有两个不同的集合,其中包含带有userId的文档列表。我需要使用流比较它们两个并返回两个中都存在的文档。我该怎么办?
答案 0 :(得分:0)
您可以使用rx package对Dart Streams具有更多功能,然后可以像这样使用CombineLatestStream.combine2<R, T, S>(Stream<R> r, Stream<T> t, S combiner(A a, B b)
import 'package:rxdart/rxdart.dart';
Stream<DocumentSnapshot> get combined => CombineLatestStream.combine2<FirebaseUser, FirebaseUser, DocumentSnapshot>(
MyFirebaseStream.document(userId).snapshots(), //or whatever your first stream is
MyOtherFirebaseStream.document(otherUserId).snapshots(),
(documentFirstStream, documentSecondStream) => {
// Do the logic to extract and return the document that satisfy your condition here
}
);
还有其他方法可以尝试,具体取决于您想要什么,ZipStream.zip2
如果要成对比较(每个流的第一个元素,每个流的第二个元素,等等)。
也许有一些代码可以知道您尝试从每个流中返回的确切内容,从而可以帮助您更多