firebase - Flutter 将 Firestore UID 传递到存储库
问题描述
对于我的项目,我使用 firestore 来获取每个用户的数据。因此,我在 Firestore 中创建了以下结构。
数据存储在:集合:用户>文档:UID(变量)>集合:提醒
为了从 Firestore 获取数据,我需要将 UID 传递到存储库中。我的提醒存储库没有此数据标准,因此我通过调用 Firebase 获得它。
让我显示代码以使其更清楚:
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:diabetes/src/model/models.dart';
import 'package:diabetes/src/entities/entities.dart';
import 'package:diabetes/src/repositories/repositories.dart';
class FirebaseRemindersRepository implements RemindersRepository {
final reminderCollection = Firestore.instance.collection("users");
@override
Future<void> addNewReminder(Reminder reminder) async {
try {
final user = await FirebaseAuth.instance.currentUser();
final uid = user.uid;
return reminderCollection
.document(uid)
.collection("reminders")
.add(reminder.toEntity().toDocument());
} catch (error) {
print(error);
}
}
@override
Future<void> deleteReminder(Reminder reminder) async {
try {
final user = await FirebaseAuth.instance.currentUser();
final uid = user.uid;
return reminderCollection
.document(uid)
.collection("reminders")
.document(reminder.id)
.delete();
} catch (error) {
print(error);
}
}
@override
Stream<List<Reminder>> reminders() {
return reminderCollection.snapshots().map((snapshot) {
return snapshot.documents
.map((doc) => Reminder.fromEntity(ReminderEntity.fromSnapshot(doc)))
.toList();
});
}
@override
Future<void> updateReminder(Reminder update) async {
try {
final user = await FirebaseAuth.instance.currentUser();
final uid = user.uid;
return reminderCollection
.document(uid)
.collection("reminders")
.document(update.id)
.updateData(update.toEntity().toDocument());
} catch (error) {
print(error);
}
}
}
正如你所看到的,这让我重复了很多次:
final user = await FirebaseAuth.instance.currentUser();
final uid = user.uid;
另外,我不能在这里做同样的事情:
Stream<List<Reminder>> reminders() {
解决方案
推荐阅读
- ruby-on-rails - 如何将使用命令行创建的 postgreSQL 数据库链接到 pgAdmin?
- machine-learning - 如何知道 scikit-learn 混淆矩阵的标签顺序并更改它
- java - 有没有一种方便的方法可以从 HashMap 的值生成排序数组?
- django - Django Rest Framework 中 Simple-JWT 的自定义权限
- python - 来历不明的登录参数?
- django - Sorl-thumbnail--> 图像高度不等于给定高度
- javascript - 你如何将事件传递给 setTimeout
- linux - Bash:从CSV循环读取N行
- flutter - 使用 Dismissible 小部件时,有没有办法在对话框中显示正在关闭的项目?
- python - 从 Pandas 中的列生成对