Javascript firebase只获取密钥,然后获取数据

Javascript firebase只获取密钥,然后获取数据,javascript,firebase,Javascript,Firebase,我在url上有如下数据结构 www.example.firebase.com/ { "companyList" : { "compkey1" : { "url1":"somelink1", "url2":somelink2 }, "compkey2" : { "url1":"somelink1", "url2":"somelink2" } } }

我在url上有如下数据结构 www.example.firebase.com/

{
  "companyList" : {
        "compkey1" : {
        "url1":"somelink1",
        "url2":somelink2
         },
         "compkey2" : {
         "url1":"somelink1",
         "url2":"somelink2"
         }
   }
}
我想实现的是,我希望firebase首先返回

  compkey1
  compkey2
而不是任何子数据

然后,如果用户想要查看特定的公司,我希望他们转到该url 像这样


firebase新手,请解释。

firebase JavaScript客户端始终检索完整的节点。它没有仅检索密钥的选项

如果只想检索公司的密钥/名称,则必须将它们存储在单独的节点中

{
  "companyList" : {
     "compkey1" : {
        "url1":"somelink1",
        "url2":somelink2
     },
      "compkey2" : {
         "url1":"somelink1",
         "url2":"somelink2"
     }
  },
  "companyKeys" : {
     "compkey1": true,
     "compkey2": true
  }
}
Firebase(和许多其他NoSQL数据库)中的一个常见建议是。在上面的示例中,您似乎需要阅读公司密钥列表,因此这就是您应该建模的内容


注意:确实有一个
shallow=true
参数,该参数将仅返回键。但我建议改为通过对数据进行不同的建模来解决问题。

Firebase有一个
shall
参数,该参数只能检索密钥。我验证了它比检索整个节点要快得多(快了100倍)

这里是谷歌应用程序脚本(抱歉):


我正在寻找firebase的查询,但无法确定我想要实现什么。我将尝试您的建议。这篇文章很旧,firebase从那时起改进了其查询功能。我建议在尝试大多数其他事情之前,先阅读Firebase网站上的整个指南。@FrankvanPuffelen关于从哪里开始(关于这个主题),你有什么建议吗?因为“整个指南”有点过分:)
{
  "companyList" : {
     "compkey1" : {
        "url1":"somelink1",
        "url2":somelink2
     },
      "compkey2" : {
         "url1":"somelink1",
         "url2":"somelink2"
     }
  },
  "companyKeys" : {
     "compkey1": true,
     "compkey2": true
  }
}
class FirebaseNamespace {

  get database() {
    if(!this._database) {
      var firebaseUrl = "https://mydatabase.firebaseio.com/";
      var secret = "mysecret";
      this._database = FirebaseApp.getDatabaseByUrl(firebaseUrl, secret);
    }
    return this._database;
  }

  get(path, parameters) {
    return this.database.getData(path, parameters);
  }

  keys(path) {
    return Object.keys(this.get(path, {shallow:true}));
  }

  save(path, value) {
    this.database.setData(path, value);
    return value;
  }

}