Firebase 如何等待多个Firestore流在flift中返回数据
我想查询两个Firestore集合,但只想返回集合的数据,该集合返回的结果比另一个更快 我的方法是使用两个流,等待其中一个返回数据,然后返回 我使用了onData参数,但是编译器从不跳转onData方法,即使集合中有与查询匹配的数据Firebase 如何等待多个Firestore流在flift中返回数据,firebase,flutter,dart,firebase-realtime-database,google-cloud-firestore,Firebase,Flutter,Dart,Firebase Realtime Database,Google Cloud Firestore,我想查询两个Firestore集合,但只想返回集合的数据,该集合返回的结果比另一个更快 我的方法是使用两个流,等待其中一个返回数据,然后返回 我使用了onData参数,但是编译器从不跳转onData方法,即使集合中有与查询匹配的数据 var someId; CollectionReference collection1 = _db.collection('collection1'); CollectionReference collection2 = _db.colle
var someId;
CollectionReference collection1 = _db.collection('collection1');
CollectionReference collection2 = _db.collection('collection2');
Query collection1Query = collection1.where('users', arrayContains: uid);
Query collection2Query = collection2.where('users', arrayContains: uid);
var resultStream1 = collection1Query.snapshots().listen((doc) {});
var resultStream2 = collection2Query.snapshots().listen((doc) {});
while(someId == null){
resultStream1.onData((data) {
var someId = data.docs.first.id;
});
resultStream2.onData((data) async {
var someId = data.docs.first.id;
await doOneMoreThing(someId);
});
}
resultStream1.cancel();
resultStream2.cancel();
return someId;
对于该检查,有一个名为StreamGroup的类,您可以在该类上组合N个流:
final newStream = StreamGroup.merge([streamOne, streamTwo]);
然后您可以将该新闻流用作公共流。检查
StreamGroup
/StreamZip