【问题标题】:I want to get realtime data from Firebase Firestore, I am trying to use stream but cant seem to be getting it我想从 Firebase Firestore 获取实时数据,我正在尝试使用流但似乎无法获得它
【发布时间】:2020-02-15 11:51:04
【问题描述】:

我是这方面的绝对初学者,所以请帮忙。 我的目标是在每次有新用户注册时,在 Firestore 上创建一个名为传感器的新文档。我能够完成这项工作,但是我想仅使用该特定用户的用户 ID 获取文档的字段。我也尝试过以下代码,但它为我提供了所有已创建文档的列表,我只想要一个具有特定用户 ID 的特定文档。

我尝试的以下解决方案来自 youtuber TheNetNin​​ja,但它获取了我收藏中所有文档的完整列表:

  //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


    【解决方案1】:

    使用文档 ID 返回文档的方法有很多种。

    我建议您查看社区已经回答的以下问题。它们不完全是您的情况 - 它们使用其他编程语言 - 但它们应该为您提供一些方法,告诉您如何仅返回每个特定 id 的文档,根据您的情况,来自用户的 id。

    如果这些信息对您有帮助,请告诉我!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 2022-08-19
      • 1970-01-01
      • 2020-01-28
      • 2021-12-19
      • 1970-01-01
      • 2017-09-02
      相关资源
      最近更新 更多