У меня есть база данных в Google Cloud Firestore, и я создаю приложение для Android в Котлине, чтобы получить к ней доступ.База данных имеет только одну коллекцию, но много документов.За один раз пользователю нужно всего около 5-6 документов.Причиной создания онлайн-базы данных является то, что в будущем можно будет легко добавлять больше документов.После загрузки данные загруженного документа редко обновляются.Итак, после загрузки я хочу, чтобы у них был доступ без Интернета.
Моя проблема в том, что даже если документы хранятся локально, для доступа к ним я должен установить прослушиватель, из-за которого код становится асинхронным, чтоделает вещи намного сложнее.Поэтому я хочу сохранить их локально другим способом, чтобы я мог без промедления получить доступ к данным.
Вот так я получаю доступ к документу из кэша:
val db = FirebaseFirestore.getInstance().collection("courses")
db.document("doc_name").get(Source.CACHE).addOnCompleteListener { task ->
if (task.isSuccessful) {
// what to write here
// to store the data locally
// if some other method is used ?
} else {
// documents need to be re-downloaded
}
}
Мой вопросКаков наилучший способ хранения моих данных и как это реализовать наилучшим образом?Учитывая, что все документы имеют похожую, но очень сложную структуру, как показано ниже.
collection/doc_example/
:
|----string
|
|----string
|
|----map
| |----string
| |----int
|
|----int
|
|----array{size=3, type=int}
|
|----string
|
|----map
| |----int
| |----array{size=variable, type=map}
| |----map
| |----string
| |----int
| |----array{size=variable, type=string}
|
|----array{size=variable, type=string}
|
|----array{size=variable, type=string} /* note - this array is optional */
|
|----array{size=variable, type=map}
|----map
|----string
|----string
|----int
|----string
|----string /* note - this one string is optional */