Резюме
В моем проекте я использую реактивную базу-огонь, и я использую чисто реактивную версию (No Expo). Однако, когда вы помещаете запрос get в любой документ в Firestore, он никогда не дает ответа. То есть в блоке try-catch он не разрешается и не отклоняется, он продолжается вечно.
(И да, я знаю об обещаниях, и я использую await / async, поэтому речь идет не о том, чтобы ждать выполнения обещания, на самом деле главное, чтобы обещания не выполнялись / не отклонялись)
Основная проблема заключается в том, что эта проблема возникает случайным образом, она не похожа на ошибку каждый раз, она происходит случайным образом. При внимательном наблюдении я также заметил, что это происходит в основном, когда я постоянно выполняю запросы get, например, у меня есть запрос, который проверяет наличие последней версии в документе, теперь, когда я перезагружаю приложение, выполняется этот запрос get, и при 2-3 частых перезагрузках этот запрос никогда не разрешается.
Я могу делать все другие вещи Firebase, такие как проверка подлинности, настройка данных документов, удаление, изменение редактирования и т. Д. Но это не сработает
немного истории фона
Это мой первый проект на реактивно-нативной и реактивно-нативной базе. В прошлом я работал над Ionic и нативным Android (Java). Я никогда не сталкивался с этой проблемой там. Я много искал в интернете, и несколько решений, которые я получил, были в основном для Firebase Web SDK, а не для response-native-firebase.
Я нашел одно решение, касающееся сброса пользователя с консоли аутентификации, но оно тоже не сработало. Я выдвигаю ссылку, которую я нашел (для справки, так как моя проблема очень похожа на эту, и в основном отличается тем, что я использую реактив-native-firebase, а не Firebase Web SDK).
https://github.com/firebase/firebase-js-sdk/issues/533
Примеры кода
Получить запросы (несколько примеров кода, которые я использую)
let updateData = await firebase.firestore().doc('Updates And Errors/Updates').get();
var expensesDoc = await firebase.firestore().doc(`NewExpenses/${dateToday}`).get()
Ожидаемый результат
Все запросы Get должны работать постоянно.
Фактический объем производства
Получить запросы работают только тогда, когда они не вызываются часто. (Я знаю, это довольно странно)