我正在开发一个社交应用程序 . 我使用Firebase作为我的后端(API) . 我无法运行单个查询来获取所有需要的数据 . 我的数据库结构如下:
**post**
{
"postID1":
{ url: "http://stackoverflow.com"
desc: "some description here" }
"postID2":
{ url: "http://google.com"
desc: "again some description here"
}
}
**album**
{
postID1:
{
albumID1:
{
type: 'Image'
name: 'my first album'
}
}
postID2:
{
albumID2:
{
type: 'youtube'
name: 'my second album'
url: 'http://youtube.com'
}
}
**media**
albumID1
{
mediaID1:
{
type: 'abc'
desc: 'some description'
}
}
我想获得所有帖子,包括其中的所有媒体文件 . 例如,我想首先得到“postID1”然后是它的专辑,然后是媒体文件,所有3个节点通过postID相互连接,这是唯一的 . 对于“postID2”等相同...在示例中,我已经解释了与post相关的专辑和媒体,但同样地,我想从其他节点检索数据,如Hashtags,Comments,Likes等 .
2 回答
使用此结构,您将无法使用单个查询获取数据 . 你有2个选择 .
1)要么像这样改变你的结构 .
因为我们知道firebase是noSQL所以不需要遵循sql规则 . 通过此结构,您可以在一个查询中获取所有数据
2)您可以在当前结构中编写多个查询 . 就像你首先从post表中获取数据然后使用post id你可以从album中获取数据然后从album id中获取数据,你可以从media table中获取数据 .
我专注于 album 方面 . 你也可以为 media 做同样的事情 .
对于 post 节点,一个查询就足够了
你可以试试这个: