【问题标题】:Angular Firebase How to find and retrieve data by fieldAngular Firebase 如何按字段查找和检索数据
【发布时间】:2019-07-11 11:40:58
【问题描述】:

我在 firebase 上的实时数据库中有以下结构的数据:

    {   "tests" : [ {
           "description" : "55",
           "number" : "11",
           "serie" : "0"   }, {
           "description" : "22",
           "number" : "13",
           "serie" : "0"   }, {
           "description" : "Test",
           "number" : "55",
           "serie" : "2"   
} ]

我希望 tro 检索字段“serie”等于“0”的所有数据。 我的服务组件中有一个用于检索所有测试数据的方法,如下所示:

  getTests(){
    firebase.database().ref('/tests')
      .on('value',(data: DataSnapshot)=>{
        this.tests= data.val() ? data.val():[];
        this.emitTests;
      }
    );
  }

此时我不知道如何只检索 serie 等于 0 的数据。

【问题讨论】:

    标签: javascript angular firebase firebase-realtime-database


    【解决方案1】:

    您可以使用 Firebase 数据库查询来做到这一点:

    firebase.database().ref('/tests')
      .orderByChild("serie").equalTo("0")
      .on('value',(data: DataSnapshot) => {
        data.forEach((child: DataSnapshot) => {
          console.log(child.key, child.val());
        });
    

    如您所见,Firebase 中的查询有两个步骤:

    1. 您可以根据子属性或其值键对数据进行排序。
    2. 然后,您可以根据订购的内容过滤数据。

    另请参阅 ordering and filtering data 上的 Firebase 文档。

    【讨论】:

    • 此命令有效,但仅在子“serie”等于 0 时有效。所以它返回和数组,但如果我的 id 不同,它会返回一个对象。结构不同,对于零,我有一个没有每个对象 id 的数组,对于其他值,每个都显示其 id,然后是子对象。
    • 我不明白你的意思。我在我的答案中添加了一个循环,以防万一你正在努力解决这个问题。如果不是这样,或者您无法使其工作,请发布您尝试过的代码和输出,通常采用与我使用的格式相似的格式。
    • 我为我的问题创建了一个新问题。感谢您的回答。 stackoverflow.com/questions/57069933/…
    猜你喜欢
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    • 2022-01-12
    • 2017-11-21
    • 2018-04-16
    相关资源
    最近更新 更多