【问题标题】:Flutter querying different levels of data in Streambuilder在 Streambuilder 中 Flutter 查询不同级别的数据
【发布时间】:2022-01-16 06:47:10
【问题描述】:

我正在尝试访问 Firebase 中的两个级别的信息。顶级集合称为消息,第二级称为聊天。我无法访问从 Chats 集合中检索到的数据快照。这是我的收藏的屏幕打印:

请在这里找到代码:

return StreamBuilder<QuerySnapshot>(
  stream: _firestore
      .collection('messages')
      .where("senderId", isEqualTo: currentUserId)
      .where("receiverId", isEqualTo: member.id)
      .snapshots(),
  builder: (context, snapshot) {
    if (!snapshot.hasData) {
      return const Center(
        child: CircularProgressIndicator(
          backgroundColor: Colors.lightBlueAccent,
        ),
      );
    }
    final messageHeaders = snapshot.data!.docs.reversed;
    print("messages first = ${messageHeaders.first.id}");
    List<MessageBubble> messageBubbles = [];
    for (var messageHeader in messageHeaders) {
      print(messageHeader["senderId"]);
      
      for (var messageDetail in messageHeader["chats"]) {
        print(messageDetail["text"]);
      }

所以在上面的打印语句中。打印“senderId”的工作正常。但不是打印“文本”的那个

我们将不胜感激地收到任何帮助。

【问题讨论】:

    标签: flutter flutter-dependencies


    【解决方案1】:

    Firestore 查询是 shallow,这意味着您在查询文档时不会获得整个子树。在您的情况下,chats 是一个子集合,因此不会与文档一起查询。

    因此,在获取文档快照后,您必须进行另一个 Firestore 查询才能在 messages 集合中获取该特定文档的 chats 子集合。

    【讨论】:

      猜你喜欢
      • 2020-11-03
      • 2021-10-22
      • 2022-11-17
      • 1970-01-01
      • 2021-08-17
      • 1970-01-01
      • 1970-01-01
      • 2020-08-11
      • 2019-08-19
      相关资源
      最近更新 更多