Реагировать Родной | Firebase Firestore | Сохранение пользовательских данных только после двойного нажатия - PullRequest
0 голосов
/ 27 января 2020

Что я ожидаю: Когда я нажимаю текст «зарегистрироваться», он одновременно создает пользователя в firebase auth, а затем создает пользователя в firestore с единственным свойством.

Что на самом деле происходит: Когда я нажимаю текст «Зарегистрироваться», он сразу же создает пользователя в firebase auth, но затем он создает пользователя в firestore только со свойством, как только я нажимаю на поле имени пользователя, поле пароля или кнопку «Зарегистрироваться» во второй раз.

Я подозреваю: Это связано с обещаниями и моими вложенными .then, но не могу понять, почему действуя таким образом; кажется действительно странным.

Пример кода:

import React from "react";
import * as firebase from "firebase";
import "firebase/firestore";

const Screen = () => {
  const firestore = firebase.firestore();

  const writeUserData = uid => {
    const docRef = firestore.doc(`users/${uid}`);
    docRef
      .set({
        example_property
      })
      .then(item =>
        console.log("successfully added user to the collection" + item)
      )
      .catch(err => {
        console.log(err);
      });
  };

  return (
    <View style={styles.container}>
      <TouchableOpacity
        style={styles.submitButton}
        onPress={() =>
          firebase
            .auth()
            .createUserWithEmailAndPassword(email, password)
            .then(userObj => writeUserData(userObj.user.uid))
            .catch(error => {
              var errorCode = error.code;
              var errorMessage = error.message;
              console.log("errorCode: " + errorCode);
              console.log("errorMessage: " + errorMessage);
            })
        }
      >
          <Text>Sign Up</Text>
      </TouchableOpacity>
    </View>
  );
};

1 Ответ

1 голос
/ 27 января 2020

Теперь работает, что я удалил анонимную функцию из .then в writeUserData. Смотрите здесь:

const writeUserData = uid => {
    const docRef = firestore.doc(`users/${uid}`);
    docRef
      .set({
        example_property
      })
      .then(console.log("successfully added user"))
      .catch(err => {
        console.log(err);
      });
  };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...