Ошибка при попытке добавить downloadUri в документ пожарного депо.«Не удалось сериализовать объект. Превышена максимальная глубина 500» - PullRequest
1 голос
/ 14 мая 2019

У меня есть коллекция Firestore, в которой с каждым документом связано изображение, которое хранится в хранилище Firebase. Ранее я сохранял ссылку на изображение и извлекал изображение через него, но, поскольку это занимало определенное время для каждого вызова, я пытался переключиться на сохранение загрузки, чтобы с помощью Picasso я мог ссылаться на него через загрузку без необходимости извлечения каждой загрузки. вещь. Однако, когда я пытаюсь записать документ внутри прослушивателя getdownloaduri при успешном выполнении, я получаю сообщение об ошибке, указывающее на цикл объекта.

Если я не включу обновление в базу данных, код сможет успешно получить загрузочный файл и передать его в просмотрщик и отобразить изображение, только при попытке загрузить его в базу данных я получу это ошибка. Я попытался обновить базу данных за пределами dowonloadUri.addonsuccesslistenr, однако значения, которые я установил внутри слушателя, никогда не обновляются за пределами слушателя.

 if(menucarditem.dluri == null)
                        {
                            val storageRef = storage.reference
                            val pathReference = storageRef.child(menucarditem.img)
                            pathReference.downloadUrl.addOnSuccessListener {
                                menucarditem.dluri = it
                                dbMealItem.dluri = it
                                db.collection("menuitems").document(dbMealItem.CatererId + dbMealItem.name).set(dbMealItem).addOnSuccessListener {  }
                                    .addOnFailureListener { }

                           viewAdapter.notifyDataSetChanged()

                            }
       .addOnFailureListener{
                                    Toast.makeText(this, "Image from database not found", Toast.LENGTH_LONG).show()
                                    Log.w(TAG, "Error getting documents: ", it)
                                }
}

Ошибка, которая выводится во время выполнения:

E / AndroidRuntime: java.lang.IllegalArgumentException: не удалось сериализовать объект. Превышена максимальная глубина 500, что вероятно указывает на наличие цикла объекта (находится в поле «dluri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri .canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonicalUri.canonica

и т.д.

1 Ответ

0 голосов
/ 03 июня 2019

То, что решило мою проблему, заключалось в том, что какой-то объект на карте был таким же, как и имя карты, поэтому он бесконечно вкладывался в нее.

Надеюсь, это решит вашу проблему!

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