我的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)
但这只是检查:是第一季的第一集检查。
有没有人遇到过这个问题?
答案 0 :(得分:1)
我认为这是您复制/重构数据库以优化读取的时间之一。
user / uid / notWatched:{ “showId_seasonId_epId”:是的 }