Текущий запрос, который вы видите ниже, не эффективен, потому что я не настроил правильную индексацию. Я получаю предложение Consider adding ".indexOn": "users/kxSWLGDxpYgNQNFd3Q5WdoC9XFk2" at /conversations
в консоли в Xcode. Я пробовал это, он работает.Firebase .indexOn со сложной структурой БД
Однако мне нужен идентификатор пользователя после users/
, чтобы быть динамичным. Я добавил ссылку на другой пост ниже, который попробовал аналогичную вещь, но я просто не могу ее получить. Вся помощь будет очень признательна!
Примечание: Идентификатор пользователя на выходе консоли не соответствует приведенному ниже скриншоту, но не имеет значения, чтобы решить проблему, на которую я верю. Поправьте меня если я ошибаюсь. Благодаря!
Вот структура моей БД в Firebase:
{
"conversationsMessagesID" : "-KS3Y9dMLXfs3FE4nlm7",
"date" : "2016-10-19 15:45:32 PDT",
"dateAsDouble" : 4.6601793282986E8,
"displayNames" : [ “Tester 1”, “Tester 2” ],
"hideForUsers" : [ "SjZLsTGckoc7ZsyGV3mmwc022J93" ],
"readByUsers" : [ "mcOK5wVZoZYlFZZICXWYr3H81az2", "SjZLsTGckoc7ZsyGV3mmwc022J93" ],
"users" : {
"SjZLsTGckoc7ZsyGV3mmwc022J93" : true,
"mcOK5wVZoZYlFZZICXWYr3H81az2" : true
}
}
и Swift запрос:
FIRDatabase.database().reference().child("conversations")
.queryOrderedByChild("users/\(AppState.sharedInstance.uid!)").queryEqualToValue(true)
Ссылки на другие должности: How to write .indexOn for dynamic keys in firebase?
Вы включили изображение дерева JSON в свой вопрос. Пожалуйста, замените это на фактический JSON как текст, который вы легко можете получить, нажав кнопку «Экспорт» в консоли базы данных Firebase. Наличие JSON в качестве текста делает его доступным для поиска, позволяет нам легко использовать его для тестирования с вашими фактическими данными и использовать его в нашем ответе, и в целом это просто хорошая вещь. –
Сделано! @FrankvanPuffelen – justColbs
Теперь я вижу, как вы его отредактировали. точно не знал, как это сделать. Спасибо! – justColbs