首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想从Firebase Firestore获取实时数据,我正在尝试使用流,但似乎无法获取

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

Stack Overflow用户
提问于 2020-02-15 19:51:04
回答 1查看 167关注 0票数 0

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

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

代码语言:javascript
复制
  //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:

代码语言:javascript
复制
 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的模型类:

代码语言:javascript
复制
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});
}

EN

回答 1

Stack Overflow用户

发布于 2020-02-17 16:02:36

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

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

如果这些信息对你有帮助,请让我知道!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60238489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档