У меня есть pojo, у которого есть набор значений
data class Product(val productId:String = "",val name:String = "", val image:String = "", val price: Int = 0, val hasDiscount:Boolean = false)
В firebase я иногда загружаю свой продукт с помощью hasDiscount, а иногда я не устанавливаю этот атрибут для продукта, в котором я наблюдаю по умолчанию Значение hasDiscount равно false, поэтому, когда я получаю свои данные из Firestore, я получаю значение NULL для этого поля, и тогда мой список продуктов не возвращается, и мой список не заполняется
suspend fun getProductList(shopId:String):Resource<MutableList<Product>>{
val productList = mutableListOf<Product>()
val snapshot = FirebaseFirestore.getInstance().collection("shops").document(shopId).collection("products").orderBy("hasDiscount",
Query.Direction.DESCENDING).get().await()
for(product in snapshot){
val produdctId = product.id
val productName = product.getString("name")!!
val productImage = product.getString("image")!!
val productPrice = product.getLong("price").toInt()!!
val hasDiscount = product.getBoolean("hasDiscount")!! // here is my error, I'm assuming that this value is not null, but is null at the database, if I change my pojo with all ? as posible null values I also get the same here
productList.add(Product(produdctId,productName,productImage,price,hasDiscount))
}
return Resource.Success(productList)
}
Теперь, если я добавлю в мое пёйо всем приписывает? операнд, чтобы сказать, что каждое значение может быть нулевым, и удалить !! в getLong, string и т. д. в моем хранилище данных я не получу значение по умолчанию, которое я создал в моем POJO, вместо этого приходит null.
Итак, у меня есть продукт с productId, name, image, price, но hasCombo может быть или нет в базе данных, если эта переменная отсутствует в продукте, который я хочу вернуть false, не ноль, если эта переменная не найдена
EDIT
Использовал атрибут @Exclude для свойства, которые не всегда нужны продукту, но проблема сохраняется
EDIT 2
В некоторых продуктах в Firebase у меня нет поля hasDiscount, когда я получаю список продуктов и один У продукта нет этого поля. Я хочу вернуть false вместо нуля, так как в моем классе данных в качестве значения по умолчанию для поля у меня есть falseDisount
Если я сделаю это
data class Product(val productId:String = "",val name:String = "", val image:String = "", val price: Int = 0, val hasDiscount:Boolean? = false)
и это
...
val hasDiscount = product.getBoolean("hasDiscount")
productList.add(Product(produdctId,productName,productImage,price,hasDiscount))
null также возвращается, и я не знаю, почему, поскольку я прямо сказал, что если hasCombo не является полем в документе, я хочу вернуть fa lse вместо null