FireStore и карты / массивы, список документов в массив в Котлине - PullRequest
0 голосов
/ 06 ноября 2019

Я наконец начал понимать много информации о FireStore, но мне интересно, могу ли я получить какую-то помощь.

Если бы у меня была установка, подобная или похожая на эту:

гонки

Android

имя: Android

размер: средний

статистика <---- это карта </p>

str: 10

пол: 12 .... (больше значений)

Как бы я это проанализировал? Я стараюсь, чтобы определенные TextViews применяли значения, найденные в базе данных, чтобы я мог просто обновить базу данных, и мое приложение будет заполнять эти значения, чтобы в будущем жесткое кодирование и обновление кода не было столь же проблематичным.

В настоящее время я использую что-то вроде этого:

val androidRef = db.collection("races").document("Android") 
androidRef.get().addOnSuccessListener { document ->
if (document != null) {
     oneOfTheTextViews.text = document.getString("str") 
} else { 
}

В настоящее время проблема заключается в том, что я могу получить доступ только из коллекции (расы) / документа (android) /, а затем из одного поля (у меня установлено "str")как отдельное поле, а не как часть карты или массива)

Каким будет наилучшая практика для этого? Разве я не должен их вкладывать? И если я могу сослаться на указанную вложенность / отображение / массив, какие функции нужно вызывать? (Чтобы было ясно, я не спрашиваю только, возможно ли это - справочные руководства и документы ссылаются на это - но какое свойство / класс / метод / и т. Д. Необходимо вызвать, чтобы получить доступ только к одному из этих значений или точекк одному из этих значений?).

Второй вопрос: есть ли способ получить список имен документов? Если у меня несколько гонок, и я просто хочу сделать представление счетчика или переработчика на основе имен документов как часть коллекции, могу ли я прочитать это в приложении?

1 Ответ

1 голос
/ 06 ноября 2019

Каков наилучший способ сделать это?

Если вы хотите получить значение вашей собственности str, которая вложена в вашу карту stats, пожалуйста, изменитеследующая строка кода:

oneOfTheTextViews.text = document.getString("str")

до

oneOfTheTextViews.text = document.getString("stats.str")

Если ваше свойство str является числом, а не строкой, то вместо вышеуказанногоиспользуйте следующую строку:

oneOfTheTextViews.text = document.getLong("stats.str")

Разве я не должен их вообще вкладывать?

Нет, вы можете вкладывать столько свойств, сколько хотите вMap.

Есть ли способ получить список имен документов?

Да, просто итерируйте коллекцию и получите идентификаторы документов с помощью функции getId().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...