#android #firebase #google-cloud-firestore
# #Android #firebase #google-облако-firestore
Вопрос:
В документации описано, что Firestore поддерживает Unicode. Вам просто нужно вставить уже отформатированный текст в Firestore. Но при выгрузке не учитываются следующие:
- Разрыв строки;
- Символы Юникода вставляются непосредственно в текст (например
u000a
). Код приведен ниже. Репозиторий
suspend fun getData(): Response<List<Model>> =
suspendCoroutine { cont ->
val collection =
firestore
.collection(COLLECTION_NAME)
.whereEqualTo(DEFAULT_CONDITION_FIELD, DEFAULT_CONDITION_VALUE)
.orderBy(SORT_FIELD, SORT_DIRECTION)
.get()
collection
.addOnSuccessListener { query ->
val data = arrayListOf<Model>()
query.toObjects(ModelDomain::class.java).forEach { data.add(it.toModel()) }
cont.resume(Response.Success(data))
}
.addOnFailureListener { cont.resume(Response.Error(it)) }
}
ViewModel
private val _data: LiveData<Response<List<Model>>> = loadData()
val data get() = _data
private fun loadData(): LiveData<Response<List<Model>>> =
liveData(Dispatchers.IO) {
emit(Response.Loading)
try {
emit(repository.getData())
} catch (e: Exception) {
emit(Response.Error(e))
}
}
Модель
data class ModelDomain(
var description: String = ""
) : KoinComponent {
fun toModel() =
Model(
description = description
)
}
data class Model(
val description: String
)
Часть кода была опущена.
Обновить
Просто написал в Notepad :
Скопировал это в Firestore:
Результат:
Ответ №1:
Firestore никоим образом не изменяет данные, которые вы в него записываете. Если вы что-то напишете в документ, а затем прочитаете документ, вы получите точно такие же данные, которые вы в него ввели.
Если вы просматриваете документ в консоли Firebase, вы не увидите все возвраты каретки и пробелы. Они свернуты, чтобы сэкономить место на экране при отображении больших объемов данных. Но если вы прочитаете данные программно, они определенно будут точно такими, как вы их написали.
Комментарии:
1. Опять же, консоль сворачивает данные. Вы должны прочитать и записать документ программно , чтобы он правильно работал с символами возврата каретки. Копирование и вставка с консоли — это не то.
2. Теперь все ясно. Чтобы получить правильные данные, вам нужно ввести их программно. Возможно ли реализовать это без написания дополнительных функций (приложение адаптировано для справочника каналов)?
3. Я не уверен, о чем вы спрашиваете. Вам нужно будет написать код для чтения и записи для работы с любыми данными.