firebase - 我想将实时数据库转换为云 Firestore
问题描述
下面是我需要转换的代码
DatabaseReference driversRef =
FirebaseDatabase.instance.reference().child("drivers");
driversRef
.child(currentfirebaseUser!.uid)
.once()
.then((DataSnapshot dataSnapShot) {
if (dataSnapShot.value != null) {
driversInformation = Drivers.fromSnapshot(dataSnapShot);
}
})
我已经建立了云存储,但我似乎无法编写代码来将我必须的内容转换为 Firestore。
这是我的尝试:
driversRef
.doc(currentfirebaseUser!.uid)
.collection('earnings')
.get()
.then((value) {
if (value != null) {
driversInformation = value.toString();
}
});
解决方案
我认为您使用collection('earning)
后Doc
是错误的。因为您可以像表名一样在开始和一次中使用它。
你可以试试这个
final databaseReference = FirebaseFirestore.instance;
databaseReference.collection('drivers').doc(currentfirebaseUser!.uid).snapshots().listen((event) {
//If you want to listen like streaming
evenyt.data(); //<- access data in <String,dynamic>
}
// If you want to list only once
var response = await databaseReference.collection('drivers').doc(currentfirebaseUser!.uid).get();
response.data()?['earning'] ?? 0 // access specific key value
在这里,我向您展示与您类似的示例:我正在更新通知徽章值,当它发生变化时。这是我的云火库结构。
//If you want to listen only once
Future<int> getBadgeCount({required String uid}) async {
var response = await databaseReference.collection('Badges').doc(uid).get();
return (response.data() != null) ? (response.data()?['BadgeCount'] ?? 0) : 0;
}
//If you want to listen like streaming
databaseReference.collection('Badges').where(uid).limit(1).snapshots().listen((response) {
badgeCount = response.docs.isNotEmpty ? (response.docs.first.data()['BadgeCount'] ?? 0) : 0;
printLog(message: "BadgeCount: ", variable: badgeCount);
});
}
推荐阅读
- excel-formula - 我有一个中值 ifs 公式,但出现错误。有什么想法吗?
- javascript - 如何通过单击按钮在 object.innerHTML 的帮助下更改 Vue.js 的组件
- python - 单个 HTML/页面中的多个交互式图形
- r - 如何在列表元素之间分配数据框的行
- java - List 的映射值
到具有属性的对象 - sql - 在 SQL Server 中创建视图并使用另一个表进行查找
- javascript - 制作 2
- arrays - 无法使用混合字符串/数字数据填充元胞数组
- java - 如何在 CMD 中打开程序并与 Java 交互
- javascript - 量角器 - 在 For Each 中单击未按预期运行