Javascript 用于子值的firebase indexOn
我正在尝试使用firebase查询获取所有心情等于M1的帖子,如下所示:Javascript 用于子值的firebase indexOn,javascript,node.js,firebase,firebase-realtime-database,Javascript,Node.js,Firebase,Firebase Realtime Database,我正在尝试使用firebase查询获取所有心情等于M1的帖子,如下所示: db.ref(`Recommendations`).orderByChild(`post/vote/moodTags/${idMood}/key`).equalTo(`${idMood}`).once('value').then(recs =>{ //Número de recs con el mood let recsCount = recs.numChildren();
db.ref(`Recommendations`).orderByChild(`post/vote/moodTags/${idMood}/key`).equalTo(`${idMood}`).once('value').then(recs =>{
//Número de recs con el mood
let recsCount = recs.numChildren();
console.log(`Número de recs encontradas --> ${recsCount}`);
...
});
和firebase控制台显示警告:
FIREBASE警告:使用未指定的索引。您的数据将在客户端上下载和筛选。考虑添加“.Noxon”:“POST/Boo/MoDaTe/M1/KEY”AT /建议到您的安全规则以获得更好的性能。
但是,我在firebase站点的索引规则是:
"Recommendations":{
".indexOn": ["post/userFirebaseKey","post/user/firebaseKey","userFrom/firebaseKey","post/location/placeId","firebaseKey","placeId"],
"post":{
"vote":{
"moodTags":{
"$moodId":{
".indexOn": "key"
}
}
}
}
}
那么,当我使用子级别时,我如何实际指定indexOn规则呢
我的数据库:
+ Recommendations
+ idRec
property1:''
property2:''
property3:''
+ post
property21:''
...
+ vote
+ moodTags
+ M1
key:'M1'
name:''
url:''
+ M2
...
你似乎操作的层次太深了:毕竟你想要索引moodTag列表,而不是一个moodTag的内容 这意味着您的规则必须更像这样:
"Recommendations":{
".indexOn": ["post/userFirebaseKey","post/user/firebaseKey","userFrom/firebaseKey","post/location/placeId","firebaseKey","placeId"],
"post":{
"vote":{
"moodTags":{
".indexOn": "key"
}
}
}
}
}
您可以在中阅读这些索引规则,也可以在和中阅读。试试这个@Valhallarossferer这是不够的,文档非常简单和琐碎。我需要的是一点不同。这就是为什么我把我执行的规则放在这里。