Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我想从Firebase Firestore获取实时数据,我正在尝试使用流,但似乎无法获取_Firebase_Flutter_Google Cloud Firestore - Fatal编程技术网

我想从Firebase Firestore获取实时数据,我正在尝试使用流,但似乎无法获取

我想从Firebase Firestore获取实时数据,我正在尝试使用流,但似乎无法获取,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我是这方面的新手,所以请帮助我。 我在这里的目标是在Firestore上创建一个名为sensors的集合内的新文档,每次新用户注册时。我能够做到这一点,但我只想用该特定用户的userid获取文档的字段。我也尝试过下面的代码,但它给了我一个所有创建文档的列表,我只想要一个具有特定用户ID的特定文档 我尝试的以下解决方案来自YouTube TheNetNinja,但它获得了我收藏中所有文档的完整列表: //sensor list from snapshot List<Sensor>

我是这方面的新手,所以请帮助我。 我在这里的目标是在Firestore上创建一个名为sensors的集合内的新文档,每次新用户注册时。我能够做到这一点,但我只想用该特定用户的userid获取文档的字段。我也尝试过下面的代码,但它给了我一个所有创建文档的列表,我只想要一个具有特定用户ID的特定文档

我尝试的以下解决方案来自YouTube 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);
  }


使用文档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});
}