我是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文档中读到了查询列表的可能性,但唯一的例子是带有“orderByChild”和“equalTo”组合的单个过滤器属性。
是否可以使用AngularFire2来解决这个问题?
谢谢。
答案 0 :(得分: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.
})