Javascript 用于子值的firebase indexOn

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();

我正在尝试使用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();
        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这是不够的,文档非常简单和琐碎。我需要的是一点不同。这就是为什么我把我执行的规则放在这里。