我对Firebase查询有点麻烦,主要是因为我查询的数据集的大小。
我想要达到的目标是:
找到brandStartsWith =' A'的所有T恤。和salesRank介于1和100之间
我已经开始填补这个问题了,但我遇到了一个问题,即由于T恤内有超过300,000条记录,我似乎无法获取数据。
如果在页面加载时在React中调用它,一段时间后我在控制台中收到以下错误:
未捕获RangeError:字符串长度无效
这是我用来启动我的代码,但我不知道该去哪里。看看this question上的解决方案,似乎我需要按照下面的查询下载数据,然后在客户端对其进行排序。我似乎无法做的事情
firebase.database().ref('tshirts')
.orderByChild('brandStartsWith')
.equalTo('A')
.once('value', function (snapshot) {
console.log(snapshot.val())
})
答案 0 :(得分:2)
您将需要创建组合键,因为您一次只能执行一个where子句。
{
"tShirts" : {
"brandStartsWith" : 'A',
"salesRank" : 5
"brandStartsWith_salesRank" = 'A_00005' //pad for as many sales ranks as you have
}, {
"brandStartsWith" : 'B',
"salesRank" : 108
"brandStartsWith_salesRank" = 'B_00108' //pad for as many sales ranks as you have
}, {
"brandStartsWith" : 'C',
"salesRank" : 52
"brandStartsWith_salesRank" = 'C_00052' //pad for as many sales ranks as you have
}
}
这将允许您执行此查询:
firebase.database().ref('tshirts')
.orderByChild('brandStartsWith_salesRank')
.startAt('A_00001')
.endAt('A_00100')
.once('value', function (snapshot) {
console.log(snapshot.val())
})
不要忘记将您的规则更新为.index
brandStartsWith_salesRank