flutter - 通过单个函数获取多个文档
问题描述
我有一个接受 id 列表的函数,并且应该获取所有具有这些 id 的文档,然后返回一个List<Map<String, dynamic>>
. 我遇到的第一个问题是 Flutter 的 Firestore 没有在单个网络调用中从集合中获取多个文档的功能。(我在这里遗漏了什么吗?)
所以,我在 id 列表上运行一个 forEach 循环,并将我得到的数据添加到一个空列表中,如下所示:
interestIds.forEarch((id) {
_db.collection('interests').document(id).get().then((DocumentSnapshot snap) {
result.add(snap.data);
}
});
return result;
正如您可能已经猜到的那样,这并没有真正起作用,因为在return
获取所有文档之前执行语句。我该如何解决这个问题?
如评论中所述更新代码:
Future<List<Map<String, dynamic>>> getAllInterestsOfUser(
List<String> interestIds) async {
//Returns list of all intrests objects given a list of interestIds
List<Map<String, dynamic>> result = List();
await interestIds.forEach((id) {
_db
.collection('interests')
.document(id)
.get()
.then((DocumentSnapshot snap) {
print('Fetched: ' + snap.data.toString());
result.add(snap.data);
});
});
print('Interests: ' + result.toString());
return result;
}
应用程序输出:
I/flutter (12578): Interests: []
I/flutter (12578): Function Call: []
I/flutter (12578): Fetched: {conversationId: -LjS54Q0c7wcQqdwePT6, 49wotilxfSRbADygh7kt3TSscnz1: {//moredata}
解决方案
推荐阅读
- python - 使用 python 从 .xml、.xslt 和 .docs 模板创建 .docs 文件
- .htaccess - 使用 .htaccess 将动态 url 从旧 url 重定向到新 url
- c# - 如何将类作为可选参数传递给方法?
- html - 定义 XML 命名空间时,SVG 未在浏览器上呈现
- android - Firebase - 无法获取验证码
- pascal - 以下帕斯卡代码有解释吗?
- python - 尝试使用 requests().post() 登录网页时,“模块”对象不可调用
- sockets - 是否可以使用来自服务器的第二个 http 请求将内容添加到网页正文
- javascript - 每次在代码的单次迭代中调用随机函数时,如何生成相同的随机字符串?
- haskell - 如何过滤 Haskell 列表中的许多条件?