Получение исключения StackOverflow при попытке предложения whereIn в Firestore - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь получить документы, принадлежащие определенному пользователю, и просто документы, которые содержат статус из 1, 2, 4, 5, 6, но вместо получения документов я получаю странную ошибку, это код, который загружает заказы с таким статусом в Firestore

suspend fun getIncompletedOrders(): Resource<List<Order>> {
        val reminderList = mutableListOf<Order>()
        val query = FirebaseFirestore.getInstance().collection("orders").whereEqualTo("uid",FirebaseAuth.getInstance().currentUser).whereIn("status",
            listOf(1,2,4,5,6)).get().await()
        for(documents in query.documents){
            reminderList.add(documents.toObject(Order::class.java)!!)
        }
        return Resource.Success(reminderList)
    }

Этот код выдает следующую ошибку:

java .lang.StackOverFlowError: размер стека 1041 КБ в com. gogle.firebase.firestore.util.CustomClassMapper $ ErrorPath.toString (com.google.firebase: firebase-firestore @@ 21.4.3: 1155)

Структура Firebase

   |_ orders
            |_ docID
                   |_ status: 2
                   |_ uid: userID

Заказ

data class Order(
    val cart: MutableList<Cart> = mutableListOf(),
    val shopName:String = "",
    val deliveryPrice: Int = 0,
    val wantDelivery: Boolean = false,
    val address:String = "",
    val paymentMethod: Int = 0,
    val total: Int = 0,
    val uid: String = "",
    val status: Int = 0,
)

Не знаю, где проблема

1 Ответ

0 голосов
/ 11 июля 2020

Похоже, что документ, который вы пытаетесь передать в свою коллекцию, слишком велик, в соответствии с this :

"Буфер транзакции Binder имеет ограниченный фиксированный размер, в настоящее время 1 МБ, который используется всеми выполняющимися транзакциями для процесса. Следовательно, это исключение может быть создано, когда выполняется много транзакций, даже если большинство отдельных транзакций имеют средний размер. "

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

Не могли бы вы поделиться более подробной информацией о документе, который вы обрабатываете, и полной ошибке трассировки?

...