我是一个绝对的初学者,所以请帮助我。我在这里的目标是在每次新用户注册时在集合内创建一个新文档,称为Firestore上的sensors。我能够做到这一点,但是我想只使用特定用户的userid来获取文档的字段。我也尝试了下面的代码,但它给了我一个所有创建的文档的列表,我只想要一个具有特定userid的特定文档。
我尝试的以下解决方案来自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);
}因此,我最终只是通过猜测来尝试以下代码,因为我并不是真的理解这些流-提供者和其他类的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});
}

发布于 2020-02-17 16:02:36
使用文档id返回文档的方法有很多种。
我建议你看看社区已经回答的以下问题。它们不完全是您的情况-它们是在其他编程语言中-但它们应该提供一些方法,告诉您如何只返回每个特定id的文档,在您的情况下,返回来自用户的id。
如果这些信息对你有帮助,请让我知道!
https://stackoverflow.com/questions/60238489
复制相似问题