首页 文章

AngularFire2通过多值查询

提问于
浏览
0

我是Firebase的新手,我有很多问题要做任何简单的数据库操作 .
我需要使用更多属性过滤一组数据 . 这是我的Firebase实时数据库:

"items" : {
    "-KuJdzzI82tnp1etnR0E:" : {
      "dateEnd" : 1506356341284,
      "dateStart" : 1505751541284,
      "enabled" : 0,
      "title" : "cat"
    },
    "-KuKeCwPtkH_Ub9YMq4C:" : {
      "dateEnd" : 1505665110444,
      "dateStart" : 1505146710444,
      "enabled" : 1,
      "title" : "wolf"
    },
    "-KuKeD1evhc4mw2njQqV:" : {
      "dateEnd" : 1506961268244,
      "dateStart" : 1506442868244,
      "enabled" : 0,
      "title" : "fish"
    }
  }

如果时间戳在dateStart和dateEnd之间,并且如果它已启用= "1",我必须提取title = "wolf"的元素 .
我在AngularFire2 doc中读到了可能查询列表的信息,但唯一的例子是具有"orderByChild"和"equalTo"组合的单个过滤器属性 .
是否可以使用AngularFire2来解决这个问题?
谢谢 .

1 回答

  • 1

    您无法向同一查询添加两个过滤器 . 您需要对预期的较小数据集进行查询,然后筛选出结果 .

    const results = []; // Results
    
    this.db.list('/items', { query: {
        orderByChild: 'title',
        equalTo: 'wolf'
    }}).subscribe(items => {
        const startTime = 0; // Some start time
        const endTime = 1; // Some end time
    
        items.forEach(item => {
            if (item.dateEnd < endTime && item.startTime > startTime) {
                results.push(item);
            }
        });
    
        // `results` will now be filled with the items.
    })
    

相关问题