Firebase .indexOn Dynami c ключ не работает - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть такая структура:

conversations:
   -439f6b3c0958:
        -messages:...
            -users:
                -ccb756c0:
                     -userId: ccb756c0
                     ...

Я пытаюсь запросить разговоры по userId внутри беседы / {someid} / user users

Firebase SDK дает мне это предупреждение и его очень плохо для производительности

 Using an unspecified index. Your data will be downloaded and filtered on the client. Consider adding '".indexOn": "users/ccb756c0/userId"' at conversations to your security and Firebase Database rules for better performance

Я добавил это правило, но оно не решило проблему

"conversations": {
    "$conversationId":{
          "users" :{
                "$uid":{
                  "userId": {".indexOn": ".value"}
                  }
          }
    }
}

Я также попробовал это без удачи:

"conversations": {
    "$conversationId":{
          "users" :{
                "$uid":{
                  ".indexOn": "userId"
                  }
          }
    }
}

Кто должен написать это правило, чтобы соответствовать структуре, которую я использую?

1 Ответ

1 голос
/ 20 апреля 2020

Вам необходимо определить индексы на уровне, на котором выполняется запрос. Прямо сейчас у вас есть один уровень слишком низко.

Так должно быть:

"conversations": {
    "$conversationId":{
          "users" :{
              "userId": {".indexOn": ".value"}
          }
    }
}
...