我正在尝试为汽车,自行车等不同类别创建搜索框 这是我的数据库结构
我编写的用于检索数据的代码
function AllDataSearch(searchBoxInput) {
firebase.database().ref('motorcycle').startAt(searchBoxInput).on('child_added', function (snapshot) {
showData(snapshot.val());
console.log("All Data Search1:", snapshot.val(),showData(snapshot.val()));
});
firebase.database().ref('cars').startAt(searchBoxInput).orderByChild('title').on('child_added', function (snapshot) {
console.log("All Data Search2:", snapshot.val());
});
firebase.database().ref('electricappliances').startAt(searchBoxInput).orderByChild('title').on('child_added', function (snapshot) {
console.log("All Data Search3:", snapshot.val());
});
firebase.database().ref('mobiles').startAt(searchBoxInput).orderByChild('title').on('child_added', function (snapshot) {
console.log("All Data Search4:", snapshot.val());
});
}
但是当我尝试运行此代码时,出现以下错误
[2018-07-10T20:01:19.574Z] @ firebase /数据库:FIREBASE警告:使用未指定的索引。您的数据将在客户端上下载并过滤。考虑在/ all处为您的安全规则添加“ .indexOn”:“ title”,以获得更好的性能。
由于错误提示,我还在firebase数据库的规则部分中添加了“。indexOn” ,请参见下图。
但该错误不会消失,是否还有其他方法可以在Firebase数据库中的多个节点之间进行搜索或删除此错误。
先谢谢了。
答案 0 :(得分:1)
警告提示您应为/all
添加索引。您的规则中没有/all
。由于您共享的代码不会查询/all
,因此您似乎在查询中的另一个位置查询了该节点。解决方案是也为/all
添加标题索引,所以:
{
"rules": {
...,
"all": {
".indexOn": "title"
}
}
}