如何在 Flutter Firestore 中查询 2 个文档并作为列表返回?
Posted
技术标签:
【中文标题】如何在 Flutter Firestore 中查询 2 个文档并作为列表返回?【英文标题】:How may I query 2 documents in Flutter Firestore and return as a List? 【发布时间】:2020-11-04 14:07:19 【问题描述】:Flutter 和 Dart 世界的新手。
我正在尝试从一个集合(会话)中查询另一个用户集合,其中每个会话只能有一个用户。我想获取每个会话,添加用户数据并返回到我的 Future>.
我有会话和用户的模型,我能够提取会话文档,然后能够使用用户信息形成我的会话,但是我没有运气返回正确的数据。看起来我的查询很好,但是我返回的数据是以 List > 而不是 List 的形式出现的。
会话模型
Sessions(
this.id,
this.title,
this.datetime,
this.userName,
this.userImage);
factory Sessions.fromJson(DocumentSnapshot doc, userName, userImage)
String id = doc.documentID;
Map json = doc.data;
return Sessions(
id: id,
title: json['title'],
datetime: json['datetime'].toDate(),
userName: userName,
userImage: userImage,
);
Firebase 查询
Future<List<Sessions>> getSessions() async
// Getting Sessions
final result = await _liveSessionsRef
.where('isFeatured', isEqualTo: true)
.getDocuments();
// Querying from Users and returning Sessions with User Id and User Image
final data = result.documents.map((doc) async
return await _userCollectionRef
.document(doc.data['id'])
.get()
.then(
(value)
return Sessions.fromJson(doc, value.data['name'], value.data['image']);
,
);
).toList();
return data;
【问题讨论】:
哪个方法返回 ListFuture<List<Sessions>> getSessions() async
// Getting Sessions
final result = await _liveSessionsRef
.where('isFeatured', isEqualTo: true)
.getDocuments();
// Querying from Users and returning Sessions with User Id and User Image
final data = Future.wait(result.documents.map((doc)
return _userCollectionRef
.document(doc.data['id'])
.get()
.then(
(value)
return Sessions.fromJson(doc, value.data['name'], value.data['image']);
,
);
).toList());
return data;
【讨论】:
我收到另一个类型错误。返回类型“Set>>”不是闭包上下文所要求的“FutureOr>”。 像魅力一样工作!我的错!以上是关于如何在 Flutter Firestore 中查询 2 个文档并作为列表返回?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Flutter Firestore 中查询 2 个文档并作为列表返回?
在 Firestore 查询中 Flutter 传递文档 ID
FLUTTER,FIRESTORE:我有一个流构建器,它从集合中的所有文档中返回某个字段..如何添加查询?