Логическое значение Firestore возвращает значение false, когда оно установлено в значение true - PullRequest
0 голосов
/ 12 марта 2020

У меня действительно странная проблема, я запустил отладчик и прошел по коду, чтобы увидеть каждый элемент из Firestore

У меня есть список продуктов в моей базе данных Firestore

Структура

shop -> shopId -> products -> productList

У меня есть класс данных следующим образом

@Parcelize
data class Producto(
    val imagenProducto: String = "",
    val nombreProducto: String = "",
    val descProducto: String = "",
    val precio: Int = 0,
    val hasDescuento: Boolean = false,
    val tipoDescuento: Double = 0.0,
    val isCombo: Boolean = false
) : Parcelable

А теперь код, который я использую для фильтрации по isCombo, создает два списка, один из которых будет содержать все продукты (с скидка при необходимости) и комбо (если для логического значения isCombo установлено значение true)

Это странно, потому что мой код выбирает все эти документы и отправляет их на мой взгляд

suspend fun getProductosList(comercioId:String):Resource<MutableList<Producto>>{
        val productList = mutableListOf<Producto>()
        val snapshot = FirebaseFirestore.getInstance().collection("comercios").document(comercioId).collection("products").get().await()
        for(producto in snapshot){
            productList.add(producto.toObject(Producto::class.java))
        }
        return Resource.Success(productList)
    }

Здесь у меня есть подколлекция, в которой находятся конечные продукты магазина (comercio).

Задача

Итак, вот что происходит, после того, как я получаю все эти документы, список приходит на мой взгляд с данными каждого элемента списка, но одно значение продукта не соответствует ожидаемому.

У меня есть место в одном документе isCombo = true, но когда это касается моего приложения, оно помещает это значение как ложное, но другой бо olean hasDescuento поставляется с правильным значением

Что я пробовал

  • очистить и восстановить
  • сделать недействительным кеш / перезапустить
  • выполнить с помощью отладчик, чтобы увидеть каждый элемент, посмотреть, вставляю ли я свою переменную с опечаткой
  • проверьте мою ссылку на данные

Вот выходные данные, вот как у меня хранятся данные по моей ссылке

enter image description here

здесь isCombo установлено на true

Теперь это то, что заканчивается на мой взгляд, при извлечении этого документа

enter image description here

Итак, здесь isCombo принимает значение false, но мой другой логический hasDescuento имеет правильное значение из базу данных (для другого другого продукта), я подозревал аннотацию Parcelize в своем классе данных, но все остальные данные, которые не isCombo, извлекаются нормально

Что может произойти?

1 Ответ

2 голосов
/ 12 марта 2020

Кажется, что свойство с равно до Combo отображается в Firestore по-разному и отображается как просто combo , а не isCombo, поэтому изменил имя свойства hasCombo, очистил и перестроил проект, и он заработал.

Благодаря Алексу Firebase Firestore toObject не удается выполнить сопоставление логического свойства

И будет чувствовать предложение для примечаний типа данных boolean в документах.

https://firebase.google.com/docs/firestore/manage-data/data-types

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