Создание правил Firebase для индексации с вложенной древовидной структурой
Я пытаюсь установить индексирование для полей customerNumber и rentalDate в моей базе данных firebase, как показано ниже. Я использую динамические ключи (UUID) для "книжного магазина", "bookId", "customerId".
Каков синтаксис для определения динамических ключей в "Правилах FIREBASE"? Я попытался использовать '$xxxx' после просмотра другого сообщения о переполнении стека, но я не уверен, что он правильный.
Документация Firebase хороша, и было бы более полезно, если бы они предоставили больше примеров для вложенных структур с динамическими ключами.
"BookStores":
{
"$bookStore1":
{
"BOOKS_RENTAL":
{
"$book1":
{
"RENTAL_INFO":
{
"rentalDate":"1121212.121212"
}
}
"$book2":{}
"$book3":{}
}
"CUSTOMERS":
{
"$customerId":
{
"CUSTOMER_INFO":
{
"customerNumber":"650-123-4567"
}
}
}
}
"$bookStore2":
{
}
"$bookStore3":
{
}
}
И мои правила настроены так. Мне нужно проиндексировать "customerNumber" и "rentalDate"
{
"rules":
{
".read": true,
".write": true,
"BookStores":
{
"$bookStoreId":
{
"BOOK_RENTAL":
{
"$bookId":
{
".indexOn":"RENTAL_INFO/rentalDate"
}
}
"CUSTOMERS":
{
"$customerId":
{
".indexOn":"CUSTOMER_INFO/customerNumber"
}
}
}
}
}
}
Однако я все еще получаю предупреждение в Xcode. Что-то очевидное, что я пропускаю или делаю неправильно?
Обновить:
Я запрашиваю RentalDate в диапазоне дат:
FQuery* query = [[[ref queryOrderedByChild:@"RENTAL_INFO/rentalDate"] queryStartingAtValue:startDateQueryString] queryEndingAtValue:endDateQueryString];
"Ссылка" указывает на
'firebase.io/Bookstores/$bookstore1/BOOK_RENTAL'
Для загрузки начальных данных я использую 'наблюдающий единый случай OfType':
[query observeSingleEventOfType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot)
И для обновлений я использую 'наблюдайте за событиями':
[query observeEventType:eventType withBlock:^(FDataSnapshot *snapshot)
где eventType - "FEventTypeChildAdded", "FEventTypeChildChanged", "FEventTypeChildRemoved"