Flutter-循环从Firestore获取数据

时间:2018-07-13 16:55:50

标签: firebase asynchronous dart google-cloud-firestore flutter

因此,基本上,我有一个用户集合,并且在每个用户中,都有该用户所拥有的未决朋友请求的子集合,如下所示:

/ users / [auto-id] / friend_requests / [auto-id] / {user:ref to another user}

但是一个用户显然可以同时有多个请求,我很难正确地获取数据。

我要正确执行的操作是获取“ friend_requests”子集合中的用户列表:

_loadFriendRequests() async {
    try {
      this._users.addAll(await _dataService.fetchFriend());
    } catch (e, stackTrace) {
      printException(e, stackTrace, "Error loading friends");
    }
}

在dataService中:

Future<List<User>> fetchFriend() async {
    final querySnapshot =
        await _currentUserDoc.reference.collection("friend_requests").getDocuments();

    return await Future.wait(querySnapshot.documents.map((doc) async {
      final user = await doc["user"].get();
      User(
        id: user["id"],
        name: user["name"],
      );
    }).toList(growable: false));
  }

这只是我尝试过的最后一件事,但是我以多种方式尝试过,也使用Future.wait(),使用/不使用async / await等 我似乎无法使其正常工作...

1 个答案:

答案 0 :(得分:0)

您在final user = await doc["user"].get();之后遗漏了return语句



如果您使用Streams或漂亮的rxdart

,这会变得容易得多