我想从Firebase Firestore获取实时数据,我正在尝试使用流,但似乎无法获取
我是这方面的新手,所以请帮助我。 我在这里的目标是在Firestore上创建一个名为sensors的集合内的新文档,每次新用户注册时。我能够做到这一点,但我只想用该特定用户的userid获取文档的字段。我也尝试过下面的代码,但它给了我一个所有创建文档的列表,我只想要一个具有特定用户ID的特定文档 我尝试的以下解决方案来自YouTube TheNetNinja,但它获得了我收藏中所有文档的完整列表:我想从Firebase Firestore获取实时数据,我正在尝试使用流,但似乎无法获取,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我是这方面的新手,所以请帮助我。 我在这里的目标是在Firestore上创建一个名为sensors的集合内的新文档,每次新用户注册时。我能够做到这一点,但我只想用该特定用户的userid获取文档的字段。我也尝试过下面的代码,但它给了我一个所有创建文档的列表,我只想要一个具有特定用户ID的特定文档 我尝试的以下解决方案来自YouTube TheNetNinja,但它获得了我收藏中所有文档的完整列表: //sensor list from snapshot List<Sensor>
//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);
}
使用文档id返回文档的方法有很多种 我建议你看看社区已经回答的以下问题。它们不完全是您的情况-它们是在其他编程语言中-但是它们应该为您提供一些方法,告诉您如何仅返回每个特定id的文档,在您的情况下,用户的id
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);
}
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});
}