firebase - Firebase 实时数据库:如何在此聊天应用数据结构中检索数据?
问题描述
我正在使用 Flutter 和 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"
}
}
}
}
- 我首先创建一个
chat_room
- 然后我将聊天室用户添加到
members
- 为了确定哪个
member
属于哪个chat_room
,我将chat_room
唯一键添加为foreign key
inmembers
并在其下添加所有相关项members
。
现在我的问题是,我需要members
按email
属性搜索并获取 member
与之关联的所有记录。例如,我需要搜索ismembers
所在的记录。email
someone@test.com
这是我当前的代码,但它没有给出我需要的东西。我也知道这是不正确的。
final DatabaseReference reference = FirebaseDatabase.instance.reference().child('members');
reference.orderByChild("email").equalTo("someone@test.com").once()
如何在 Flutter 中执行此数据检索?如果我的聊天应用程序数据结构无效,我愿意为更好的结构提供建议。
解决方案
推荐阅读
- python - Python中的聚合和排序
- react-native - 在 npm 安装 react-native 项目期间出现问题
- php - 如何在 Alpine Linux 容器上安装 ZeroMQ for PHP?
- python - 模块“火炬”在 Visual Studio 代码中没有“空”成员错误
- svg - 使用 D3.js 强制时如何防止气泡接触 svg 框架/边框?
- python - Python 以数字方式列出文件
- reactjs - 在反应中更新状态更新的表单组件不会重新渲染
- mongodb - Mongoose distinct 返回空数组
- typescript - “会话和部分”类型上不存在属性“用户 ID”
' - azure - 是否有获取 Azure 订阅信息的 API