是否可以仅从Firebase检索密钥列表?

时间:2015-12-10 11:00:19

标签: javascript firebase nosql

我有一个这种形式的节点:

index
   $categoryId
     $productId

我希望主要检索index的键列表,从而填充索引中所有可用$categoryId的对象。

有没有办法在Firebase中检索此列表?我假设检索密钥列表比使用$categoryId中的所有数据的列表更有效。

据我所知,另一种方法是维护所有类别的索引列表,但这需要更多编码(当编辑和删除类别时)。

1 个答案:

答案 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));