Есть ли разница в производительности между добавлением правила безопасности .indexOn и его отсутствием? - PullRequest
0 голосов
/ 10 марта 2019
{
    1:{
        status:"inactive"
    },
    2:{
        status:"inactive"
    },
    3:{
        status:"active"
    }
}

Вот пример структуры JSON. Мой вопрос, если я делаю:

return mainDB.ref("products").orderByChild('status').equalTo('inactive').once('value').then(data =>{
    console.log(JSON.stringify(data));
})

Есть ли разница в производительности между добавлением правила безопасности .indexOn и его отсутствием, а также если было добавлено .indexOn, то где и когда оно фактически фильтруется, если не на клиенте?

Спасибо!

1 Ответ

0 голосов
/ 10 марта 2019

Если вы выполняете запрос к свойству, для которого вы не определили индекс, Firebase загрузит все данные из этого местоположения на клиент и выполнит там сортировку и фильтрацию.

Это означает, что вы должны всегда определять индексы для свойств, по которым вы запрашиваете, поэтому Firebase показывает довольно громкое сообщение в вашей консоли JavaScript, когда обнаруживает, что вы запрашиваете свойство без индекса.


Обновление для вопроса в комментариях.

Чтобы создать индекс для свойства status каждого дочернего узла в узле верхнего уровня с именем products, вам потребуется:

{
  "rules": {
    "products": {
      ".indexOn": "status"
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...