当前位置: 首页 > 知识库问答 >
问题:

使用颤振从firebase firestore检索数据

劳法
2023-03-14

我正在尝试从cloud Firestore的Flutter中的以下路径获取数据,我有以下结构

  1. followers/{currentuser}/userfollower/{user_id}
  2. 用户/user_id/user_details

我正在尝试获取当前用户的所有关注者的详细信息。有人能帮忙吗?

我能得到第一部分是因为

DocumentSnapshot snapshot =
        await followersRef.document(currentUser.id).get();

我不知道如何循环通过所有id从用户集合中获取数据。我尝试了以下代码,但没有成功。

snapshot.data.forEach((key, value) async {
      DocumentSnapshot snapshot2 =
          await usersRef.document(snapshot.documentID).get();
      print('List' + snapshot2.data);
    }

共有1个答案

汝宏伯
2023-03-14

你可以做这样的事情:

final db = Firestore.instance;
final uid = firebase.auth().currentUser.uid;

var userDetails = [];
var data = db.collection("followers").doc(uid).collection("userFollowers").get()
 .then(function(querySnapshot) {
    querySnapshot.forEach(function(doc) {
        userDetails.add(db.collection("users").doc(doc.user_id)
          .collection("user_details").get())
    });
});

注意:您可以通过将所有关注者ID添加到每个当前用户文档的关注者ID数组来简化此操作,这将提高性能并减少读取次数和应用程序管理的数据量。

 类似资料:
  • 也许这是一个新手问题,但我正在学习颤振和一些东西,如异步、等待、未来,还不适合我的想法。无论如何,我要做的是从“field.documents[index][“name”]”中获取值,并构建一个列表。这是我的代码: 我想让productName在foreach之外。当我打印时,它首先打印null。我也会发布我的整个函数: 谁能帮帮我吗?我知道它与异步编程有关,但我正在学习。谢谢

  • 我的Firebase Firestore数据结构如下所示 括号中是各自userinfo文档的内容 我想从/users/集合中检索所有的userinfo文档,其中name==Jack,所以我应该检索和。有人可以帮助我如何在Flutter中做到这一点,而无需检索整个/用户/集合,并在本地过滤设备上的数据。 谢谢:)

  • 我可以使用“startAfter”和“limit”进行分页,但它有错误。 例如,在Firestore DB中,我有7条记录: 当页面大小为5时,第一页就可以了,因为我使用了: 它给了我1-5项。 当它加载第二页时,我使用了: 问题是第二页结果只有item7,item6消失了。“开始”也有同样的问题。 真希望它有“抵消”功能,有人有解决办法吗?

  • 我使用pushNamed()从屏幕中获取返回数据,如下所示: 但代码有问题,这是完整的错误堆栈跟踪: 但以下代码正常工作:

  • flutter似乎在空安全检查和非空安全检查之间切换,导致了几十个问题。 空错误检查返回???

  • 将颤振集成到主机应用程序(docs)时,有几种方法可以实现,其中一种(最简单的)方法是通过颤振活动类在新活动中打开颤振。这样地: 传统上,对于Flutter侧的Android风格窗口,我们创建带有后退按钮的AppBar。 此AppBar后退按钮和Android系统后退按钮的行为必须相同:按下后退按钮时,前台活动必须关闭(完成)。 目前系统后退按钮确实关闭了,但如何从flutters AppBar后