Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase实时数据库:如何检索此聊天应用程序数据结构中的数据?_Firebase_Flutter_Firebase Realtime Database_Flutter Dependencies - Fatal编程技术网

Firebase实时数据库:如何检索此聊天应用程序数据结构中的数据?

Firebase实时数据库:如何检索此聊天应用程序数据结构中的数据?,firebase,flutter,firebase-realtime-database,flutter-dependencies,Firebase,Flutter,Firebase Realtime Database,Flutter Dependencies,我正在开发一个聊天应用程序与颤振和Firebase实时数据库。下面是我的JSON结构 { "chat_room" : { "-MMR-dPo0A0nG4hcVW2j" : { "chat_mode" : "Supplier", "last_message" : "Test", "timestamp" : 160

我正在开发一个聊天应用程序与颤振和Firebase实时数据库。下面是我的JSON结构

{
  "chat_room" : {
    "-MMR-dPo0A0nG4hcVW2j" : {
      "chat_mode" : "Supplier",
      "last_message" : "Test",
      "timestamp" : 1605713958580
    },
    "-MMRMbKC-818t2rg9UU5" : {
      "chat_mode" : "Supplier",
      "last_message" : "Test",
      "timestamp" : 1605719979342
    }
  },
  "members" : {
    "-MMR-dPo0A0nG4hcVW2j" : {
      "-MMR-dUUrMP1pDUZDMU3" : {
        "email" : "someone@test.com",
        "profile_pic" : "",
        "userID" : 30,
        "user_role" : "customer"
      },
      "-MMR-dYyDNdZfyLdCHD1" : {
        "email" : "anotherone@test.com",
        "userID" : 50,
        "user_role" : "supplier"
      }
    },
    "-MMRMbKC-818t2rg9UU5" : {
      "-MMRMbP_ucK89HU-yKaW" : {
        "email" : "someone@test.com",
        "profile_pic" : "",
        "userID" : 30,
        "user_role" : "customer"
      },
      "-MMRMbTzL3x3I9BqLxOD" : {
        "email" : "anotherone@test.com",
        "userID" : 50,
        "user_role" : "supplier"
      }
    }
  }
}
  • 我首先创建了一个
    聊天室
  • 然后我将聊天室用户添加到
    成员中
  • 为了确定哪个
    成员
    属于哪个
    聊天室
    ,我在
    成员
    中添加了
    聊天室
    唯一键作为
    外键
    ,并在该键下添加所有相关的
    成员
  • 现在我的问题是,我需要通过
    email
    属性搜索
    成员
    ,并获取与之关联的所有
    成员
    记录。例如,我需要搜索
    成员
    电子邮件
    someone@test.com

    这是我当前的代码,但它没有提供我所需要的。我也知道这是不正确的

    final DatabaseReference reference = FirebaseDatabase.instance.reference().child('members');
    reference.orderByChild("email").equalTo("someone@test.com").once()
    

    如何在颤振中执行此数据检索?如果我的聊天应用程序数据结构无效,我愿意寻求更好结构的建议。

    您的数据结构在您查询的节点下有两层嵌套。Firebase实时数据库查询只能有一个动态级别,因此您对其进行排序/筛选的值必须位于每个直接子节点下的固定路径。再见。@FrankvanPuffelen谢谢你。我想我需要改变数据库结构。我在给定的链接中阅读了你的答案。那么,也许最好转换成这样的数据se结构@FrankvanPuffelen也在我共享的链接和您提供的链接中讨论了设置“Set”数据类型。当我们使用
    push.set()