Firebase - JS查询 - 获取一个节点,其中Child值具有值为xxx的Child

时间:2018-01-17 19:17:05

标签: javascript firebase

我的firebase查询遇到了一个小问题。 我想要收集所有我还没看过的剧集。目前我从firebase加载它们并在JavaScript中使用过滤器功能。但我想尽量减少firebase的数据下载。

所以我只想得到符合这个虚拟代码标准的系列:

ref("series").orderByChild("seasons/*/episodes/*/episodeWatched").equalTo(false)

这是我在firebase中的结构的一个小输出

series >
    <unique series id>
        seriesName: string
        seasons >
            seasonCount: number
            <season nummer>
                episodes >
                    <episode number>
                        episodeName: string
                        episodeWatched: boolean
                        episodeAirDate: Date

更“真实”的例子是:

{ series: 
    [{ 123456: 
        { seriesName: "Mr Robot", 
          seasonCount: 3,
          seasons:
            [{ 0: episodeCount: 10,
                 episodes:
                   [{ 0:
                        { episodeName: "Eps1.0_hellofriend.mov",
                          episodeWatched: true,
                          episodeAirDate: 27-05-2015 }
                    { 1:
                        { episodeName: "Eps1.1_ones-and-zer0es.mpeg",
                          episodeWatched: false,
                          episodeAirDate: 01-07-2015 }
                   ...
                   }]
            ...
            }]
        }                            
   }]
}

我在上面的虚拟代码中遇到了这个“通配符”的问题,我只得到特定节点的值,而且我无法连接“orderByChild”函数。

如果我可以连接这个功能,我对此的看法就像是:

ref("series").orderByChild("seasons").orderByChild("episodes").orderByChild("episodeWatched").equalTo(false)

目前我尝试使用通配符或其他任何类似的东西,目前唯一可行的是:

ref("series").orderByChild("seasons/0/episodes/0/episodeWatched").equalTo(false)

但这只是检查:是第一季的第一集检查。

有没有人遇到过这个问题?

1 个答案:

答案 0 :(得分:1)

我认为这是您复制/重构数据库以优化读取的时间之一。

user / uid / notWatched:{   “showId_seasonId_epId”:是的 }