База данных Firebase Realtime Запросы работают с простым списком узлов в месте, где вы выполняете запрос . Поэтому в вашем случае в запросе учитываются прямые дочерние элементы узла mileage_maintenance
(который на скриншоте является просто узлом 1
).
В ваших правилах можно использовать символы подстановки, как в вашем случае:
{
"rules": {
".read": true,
".write": true,
"mileage_maintenance": {
"$id": {
"battery_and_cables":{
".indexOn": ["distance_traveled"]
}
}
}
}
}
Как видите, я добавил здесь уровень $id
для узла 1
. Теперь это означает, что у вас есть индекс, определенный на каждом узле /mileage_maintenance/$id/battery_and_cables
для свойства distance_traveled
каждого дочернего узла под этим.
Таким образом, с этим индексом вы можете запросить конкретный c /mileage_maintenance/$id/battery_and_cables
путь для значений distance_traveled
. Но вы не можете выполнить запрос только на /mileage_maintenance
для всех значений distance_traveled
под ним.
Если вам нужен такой запрос, вам потребуется изменить / дополнить модель данных, чтобы разрешить его. Например, введя плоский список distance_traveled
узлов, которые можно затем запросить:
"distance_traveled": {
"1000000": "1/battery_and_cables/-M01CT...1hMj"
}
или
"distance_traveled": {
"1~battery_and_cables~-M01CT...1hMj": 1000000
}
, где ~
в этой последней модели является просто отдельно для сегментов в этом ключе, так как /
не допускается.
Также см .: