我正在尝试在我的Firebase数据库上进行查询
我当前数据库的结构如下
查询如下(工作正常):
firebase.database().ref('/users/'+id).orderByValue().endAt(7000).once('value').then(......
为避免必须从节点下载所有数据并在客户端上处理查询,我必须创建规则。现在我有这个:
"users": {
"$id": {
".indexOn": ".value"
}
}
我的问题是:使用此规则,我的查询将仅下载必要的内容,或者我必须添加其他内容,例如“ .indexOn”:“。value> 7000”以提高效率?
您需要在要执行索引的JSON级别上定义索引和查询。由于要查询用户的值,因此索引如下所示:
{
"rules": {
"users": {
".indexOn": ".value"
}
}
}
因此,这在上定义了一个索引/users
,然后您可以在该索引上对其值的子节点进行排序/过滤。
然后,您可以使用以下查询:
firebase.database()
.ref('/users')
.orderByValue()
.endAt(7000)
.once('value')
.then(function(results) {
results.forEach(function(snapshot) {
console.log(snapshot.key+": "+snapshot.val());
});
})
如果要确保此处没有读取多余的数据,可以做两件事
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句