【发布时间】:2020-02-15 11:51:04
【问题描述】:
我是这方面的绝对初学者,所以请帮忙。 我的目标是在每次有新用户注册时,在 Firestore 上创建一个名为传感器的新文档。我能够完成这项工作,但是我想仅使用该特定用户的用户 ID 获取文档的字段。我也尝试过以下代码,但它为我提供了所有已创建文档的列表,我只想要一个具有特定用户 ID 的特定文档。
我尝试的以下解决方案来自 youtuber TheNetNinja,但它获取了我收藏中所有文档的完整列表:
//sensor list from snapshot
List<Sensor> _sensorListFromSnapshot(QuerySnapshot snapshot) {
return snapshot.documents.map((doc) {
return Sensor(
fireRead: doc.data['fireRead'] ?? false,
airQuality: doc.data['airQuality'] ?? 0,
carbonMonoxide: doc.data['carbonMonoxide'] ?? 0,
lpg: doc.data['lpg'] ?? 0,
smoke: doc.data['smoke'] ?? 0,
);
}).toList();
}
//get sensors stream
Stream<List<Sensor>> get sensors {
return sensorData.snapshots().map(_sensorListFromSnapshot);
}
所以我最终只是通过猜测尝试了以下代码,因为我并不真正了解这些 Streams- Providers 和其他类型的 dart-flutter:
Sensor specificSensorFromSnapshot(DocumentSnapshot event) {
return Sensor(
fireRead: event.data['fireRead'] ?? false,
airQuality: event.data['airQuality'] ?? 0,
carbonMonoxide: event.data['carbonMonoxide'] ?? 0,
lpg: event.data['lpg'] ?? 0,
smoke: event.data['smoke'] ?? 0,
);
}
Stream<Sensor> get sensor {
final DocumentReference specificSensorData =
Firestore.instance.collection('sensors').document(uid);
return specificSensorData.snapshots().map(specificSensorFromSnapshot);
}
我有一个名为 Sensor 的模型类:
class Sensor {
final int airQuality;
final bool fireRead;
final int carbonMonoxide;
final int smoke;
final int lpg;
Sensor(
{this.fireRead,
this.smoke,
this.carbonMonoxide,
this.airQuality,
this.lpg});
}
【问题讨论】:
标签: firebase flutter google-cloud-firestore