首页 > 解决方案 > Flutter - 循环从firestore获取数据

问题描述

所以基本上我有一个用户集合,在每个用户中都有一个用于用户拥有的待处理朋友请求的子集合,如下所示:

/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");
    }
}

在数据服务中:

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() 也有/没有异步/等待等,我似乎无法让它工作......

标签: firebaseasynchronousdartgoogle-cloud-firestoreflutter

解决方案


您在之后缺少退货声明final user = await doc["user"].get();



如果您使用Streams或花哨的 rxdart ,这可能会变得容易得多


推荐阅读