Я использую FireStore в Expo React Native.
Мой код:
import * as firebase from "firebase";
import '@firebase/firestore';
store = {
uid: null,
data: null
}
firebase.initializeApp(firebaseConfig);
export async function startUpAsync() {
await firebase.auth().setPersistence(firebase.auth.Auth.Persistence.LOCAL);
try {
await new Promise((resolve => {
try {
firebase.auth().onAuthStateChanged(user => {
store.uid = user?.uid;
resolve();
})
}
catch (e) {
logError(e);
return null;
}
}));
const doc = await firebase.firestore().collection('my-collection').doc(store.uid).get();
if (doc.exists) {
store.data = doc.data();
}
else {
store.data = {...initalData};
}
return store.data;
}
catch (e) {
console.error(e);
return null;
}
}
Я пытаюсь протестировать свой код без соединения inte rnet.
Сначала я запускаю приложение с подключением, проверкой подлинности и получением документов. Затем я добавил следующую строку в startUpAsync
после setPersistence
:
firebase.firestore().disableNetwork()
Аутентификация работает нормально, однако загрузка документа не удалась. Я ожидал получить документ из локального хранилища. Сообщение:
Failed to get document because the client is offline.
Я что-то упустил в своей конфигурации Firebase?
Версии:
"@firebase/firestore": "1.12.1"
"expo": "37.0.0"
"firebase": "7.9.0"
"react": "16.9.0"
"react-native": "https://github.com/expo/react-native/archive/sdk-37.0.0.tar.gz"
Я предполагаю, что это также может быть проблемой с моим симулятором несколько, еще не проверял это на физическом устройстве.