Firestore QuerySnapShot пуст при первой установке или запуске

#android #firebase #google-cloud-firestore

#Android #firebase #google-облако-firestore

Вопрос:

Был простой запрос с Firestore внутри ViewModel , все в порядке, за исключением того, что он не входит в for инструкцию и никогда не запускается, и это обычно происходит при первом запуске или установке проекта.

Примечание: Это первая страница (фрагмент) ViewPager , в то время как вторая страница, которая имеет идентичный подход к получению документов, работает нормально.

 fun fetchAssignments(){

        fireStore.collection(appContext.getString(R.string.assignment))
            .whereEqualTo(appContext.getString(R.string.type), GlobalConfig.userData.shift)
            .orderBy(appContext.getString(R.string.time), Query.Direction.DESCENDING)
            .get()
            .addOnSuccessListener {

                val assList = mutableListOf<AssignmentData>()

                for (item in it){

                    val assignment = item.toObject(AssignmentData::class.java)
                    assignment.documentId = item.id
                    assList.add(assignment)

                }

                assignmentList.value = assList

            }
            .addOnFailureListener {

                assignmentList.value = listOf()

            }

    }
 

Но при моем втором запуске for оператор работает, возможно, кэш также помогает.

Это должно быть ошибкой, потому что почему такой запрос работает со вторым фрагментом с почти таким же запросом, а не с первым фрагментом, и почему, когда я снова вызываю функцию с помощью кнопки повтора, она работает по назначению?

Для получения дополнительной информации проверьте его билет

Комментарии:

1. В чем «это» for (item in it){ ?

2. Какой тип объекта assignmentList ?

3. @AlexMamo его MutableLiveData<List<AssignmentData>>

4. Как вы наблюдаете за этим объектом?

5. просто базовый наблюдатель viewmodel с viewlifecycle, а Firestore в первую очередь имеет пустой QuerySnapshot , поэтому проблема, скорее всего, в этой части. Пожалуйста, посмотрите ссылку на билет