我有一个这种形式的节点:
index
$categoryId
$productId
我希望主要检索index
的键列表,从而填充索引中所有可用$categoryId
的对象。
有没有办法在Firebase中检索此列表?我假设检索密钥列表比使用$categoryId
中的所有数据的列表更有效。
据我所知,另一种方法是维护所有类别的索引列表,但这需要更多编码(当编辑和删除类别时)。
答案 0 :(得分:9)
您可以在REST API中使用shallow keys option,但首选索引。
<强> Plnker demo. 强>
fetch('<my-firebase-app>/category/.json?shallow=true')
.then((response) => {
return response.json()
})
.then((data) => console.log(data)) // prints only keys under category
不幸的是,实时SDK中没有解决方案。但是,我建议您构建数据以避免使用REST API。尝试在Firebase数据库中存储$categoryId
的索引。我知道这是额外的代码,但它通常是一行代码。
{
"lookupCategory": {
"category_one": true,
"category_two": true,
"category_three": true,
"category_four": true,
"category_five": true
}
}
使用此索引,您可以进行实时监听,如果愿意,可以.once()
。
var ref = new Firebase('<my-firebase-app>/lookupCategory');
ref.on('value', (snap) => console.log(data));