firebase - 从 Firestore 获取集合,.map 不起作用(颤振)
问题描述
我正在为我的应用程序使用 Flutter 和 firebase。
我通过将所有代码放在 main 中来启动我的应用程序。飞镖我现在想很好地组织我的文件,但我遇到了一个问题。
我创建了一个带有数据库的服务文件夹。dart 文件,我在其中创建了一个类以在 firestorm 中查找我的项目
问题是我没有传入快照。docs.map ((doc))
这是我在数据库中的代码。镖
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutterfirebase/models/todo_model.dart';
class DatabaseService {
DatabaseService();
final CollectionReference itemsCollection =
FirebaseFirestore.instance.collection("items");
Stream<List<TodoItem>> get todos {
return itemsCollection.snapshots().map((QuerySnapshot snapshot) {
inspect(snapshot.docs);
return snapshot.docs.map((DocumentSnapshot doc) {
print('here');
inspect(doc);
return TodoItem(text: doc.data()['text'], done: doc.data()['done']);
});
});
}
}
print(snapshot.docs.length);
返回 4. inspect(snapshot.docs)
作品,我可以看到我的 4 queryDocumentSnapshot 和我的id
但 print('here')
没有出现,也没有 inspect(doc)
你能帮我弄清楚发生了什么吗?
这是软件包的版本
firebase_core:^1.0.2
cloud_firestore:^1.0.3
谢谢
解决方案
我认为你应该从流中返回 QuerySnapshot 而不是 DocumentSnapshot,就像这样
Stream<List<TodoItem>> getSomeoneItems() {
return FirebaseFirestore.instance.collection('items')
.snapshots()
.map((qSnap) =>
qSnap.docs.map((doc) => TodoItem.fromJson(doc.data())).toList());
}
然后您可以在 StreamBuilder 小部件内的视图中使用此流。
推荐阅读
- r - 错误代码:手动刻度值不足
- php - Echo 多个 PHP MySQL 调用未在 HTML 中显示
- javascript - JavaScript中的限制数字范围
- html - 如何使用烧瓶返回在 html 上显示图像?
- mysql - MySQL 连接到远程服务器
- vue.js - 检查组件是否处于活动状态以隐藏它
- kotlin - 通知面板中带有控件的透明活动
- spring-boot - springboot tomcat应用程序的wily.introscope.agentProfile属性文件需要语法
- ruby-on-rails - Ruby on Rails 浅层嵌套资源
- reactjs - React Native - 如何在 ASYNC 函数完成后执行函数