Я использую аутентификацию firebase в проекте response и redux, и я сталкиваюсь со странным поведением в облачном хранилище firestore, отправленный ему документ всегда является предыдущим, а не текущим:
Когда я регистрируюсь впервые из браузера, из которого я никогда не регистрировался, база данных получает правильный документ (текущий), но если я попытаюсь снова зарегистрироваться в том же браузере, я столкнусь с этой проблемой
Это мой redux signUp action
export const signUp = ({ email, password, firstName, lastName }) => {
return (dispatch, getState, { getFirebase, getFirestore }) => {
const firebase = getFirebase();
const firestore = getFirestore();
firebase
.auth()
.createUserWithEmailAndPassword(email, password)
.then((resp) => {
return firestore.collection('users').doc(resp.user.uid).set({
firstName: firstName,
lastName: lastName,
initials: firstName[0] + lastName[0]
});
})
.then(() => {
dispatch({ type: 'SIGNUP_SUCCESS' });
})
.catch((err) => {
dispatch({ type: 'SIGNUP_ERROR', err });
});
};
}
Это мой файл конфигурации firebase файл:
import firebase from 'firebase/app';
import 'firebase/auth';
import 'firebase/firestore';
const fbConfig = {
apiKey: "some key",
authDomain: "react-redux-firebase-b4759.firebaseapp.com",
databaseURL: "https://react-redux-firebase-b4759.firebaseio.com",
projectId: "react-redux-firebase-b479",
storageBucket: "react-redux-firebase-b479.appspot.com",
messagingSenderId: "657030244",
appId: "some id",
measurementId: "G-Y3VR"
};
firebase.initializeApp(fbConfig);
firebase.firestore().settings({timestampsInSnapshots: true});
export default firebase;
а это мой индекс. js файл
const store = createStore(rootReducer,
compose(
applyMiddleware(thunk.withExtraArgument({ getFirebase, getFirestore })),
reduxFirestore(firebase, fbConfig)
)
);
const rrfConfig = {
userProfile: 'users',
useFirestoreForProfile: true,
attachAuthIsReady: true
};
const rrfProps = {
firebase,
config: rrfConfig,
dispatch: store.dispatch,
createFirestoreInstance,
presence: 'presence',
sessions: 'sessions'
}
ReactDOM.render(
<React.StrictMode>
<Provider store={store}>
<ReactReduxFirebaseProvider {...rrfProps}>
<App />
</ReactReduxFirebaseProvider>
</Provider>
</React.StrictMode>,
document.getElementById('root')
)