firebase - 如何使用颤振从 Firebase 实时数据库中检索特定数据?
问题描述
我正在构建一个应该为您创建电影库的应用程序。我已经设置了我的 firebase 数据库来存储电影标题和数据库中的所有电影规格,如下所示:
我想要采取的下一步是仅阅读电影标题(Official Secrets、Seberg、Unbreakable Kimmy Schmidt),以创建一个向用户显示电影标题的列表。我尝试使用
void readData()
{
DBRef.once().then((DataSnapshot datasnapshot){
print('DATA SNAPSHOT NEXT LINE');
print(datasnapshot.value);
});
}
但是当我只想要标题时,会抓取我的 firebase 数据库中的所有数据。我如何只抓取标题?然后,如果用户选择了一个标题,那么我想进入数据库并获取该标题下的所有信息。例如:
- 用户在他们的图书馆中有这 3 部电影
- 用户选择 Seberg
- 现在我的应用程序进入数据库并获取 Seberg 下包含的所有信息。
我也试过:
void readData()
{
DBRef.child('Official Secrets (2019)').once().then((DataSnapshot datasnapshot)
{
print('DATA SNAPSHOT NEXT LINE');
print(datasnapshot.value);
});
}
我用它来尝试测试只抓取电影的标题,但这会返回 null。
解决方案
不幸的是,简单的答案是你不能。不适用于当前架构。由于 RTDB 中数据的组织方式,不可能只获取电影标题而不获取整个节点的子数据。
您现在必须做的称为数据扁平化,即避免深度嵌套以避免获取节点的全部数据。本关于结构化数据的指南可能会有所帮助。
您可以创建一个名为的附加节点movie_titles
并将所有电影标题保留在那里并保持reel-house
节点不变。
现在,您总是在movie_titles
最初获取节点而不获取所有数据并在您的应用程序中显示标题。当用户在您的应用程序中点击特定标题时,然后从reel-house
节点中获取相应的数据。
您的数据库可能看起来像这样
movie_titles:[
"title 1",
"title 2",
"title 3",
"title 4",
],
reel-house: [
"title 1": {
// data for title 1
},
"title 2": {
// data for title 2
},
"title 3": {
// data for title 3
},
"title 4": {
// data for title 4
},
],
推荐阅读
- java - 在 Jboss Wildfly 上部署 EAR 文件失败
- json - 你如何解析这个 JSON 数据?
- c# - 在 Asp.Net Core 和 Razor 视图中显示来自路径的图像?
- android - 转换列表
在颤动中进入json - c - 我的 C 代码没有在 Visual Studio 2017 上编译,并且一直给我一个错误,说它找不到特定的文件?
- r - read undirected graph csv file in R with library statnet
- php - 如何从php中的文件名中删除意外的点
- javascript - DT数据表中的多个子表
- android - 在 Retrofit 422 代码响应中,我没有得到完整的错误正文响应
- swift - ObjectMapper 嵌套(三重)字典