База данных firestore получает предыдущий документ, а не текущий? - PullRequest
0 голосов
/ 09 июля 2020

Я использую аутентификацию 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')
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...