我想查询两个 Firestore 集合,但只想返回比另一个更快返回结果的集合的数据。
我的方法是使用 2 个流并等到其中一个返回数据,然后我可以返回。
我使用了 onData 参数,但即使集合中有与查询匹配的数据,编译器也不会跳转到 onData 方法。
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;