【发布时间】:2021-04-08 01:11:50
【问题描述】:
我正在开发一个颤振应用程序并使用 Firestore 作为后端: 我的数据库结构是:
- 用户(集合)
- userid(用户属性)
- 书籍(子收藏)
- booksList(对象数组(或 Firestore 调用它们的地图))
从 booksList 数组中检索每本书的函数是:
Future<List<Book>> bookshelf(String userId) async {
return await FirebaseFirestore.instance
.collection('Users')
.where('userId', isEqualTo: userId)
.get()
.then((querySnapshot) => querySnapshot.docs.map((doc) => doc.reference
.collection('Books')
.get()
.then((querySnapshot) => querySnapshot.docs.forEach((doc) {
var books = doc.data()['bookList'];
return books
.map<Book>((elem) => Book(title: elem['title']));
}))).toList());
我的问题是我无法返回 Future>;
我试图创建一个数组并在第 12 行向其中添加元素(我实际上是在此处正确获取书籍),但它没有工作,因为 return 语句没有等待查询完成。
基本上,我无法将获得的对象转换为 Future ,因为我需要该功能。
现在我得到一个“MappedListIterable
谢谢。
【问题讨论】:
-
你现在在做什么?
-
@salmansamadi:那是在 java 上,我不太确定如何在 dart 中制作它,因为方法完全不同。
-
@PeterHaddad:我得到一个“MappedListIterable
>”
标签: firebase flutter dart google-cloud-firestore