Как добавить данные в документ firestore после создания пользователя - PullRequest
0 голосов
/ 12 июля 2020

У меня есть приложение для реагирования, которое должно регистрировать пользователя и добавлять информацию о пользователе в коллекцию с помощью uid. Я использую redux и разбил свой код на компонент, редуктор и действие. Это компонент добавления пользователя:

state = {
    name : '',
    email : '',
    password : '',
    position : '',
    department : '',

}

handleChange = (e) => {
    this.setState({
        [e.target.id]: e.target.value
    })
}

handleSubmit = (e) => {
    e.preventDefault();
    this.props.signUp(this.state)
}

render() {
   return(//I have my input fields and submit button here)
}

const mapStateToProps = (state) => {
    return {
        auth: state.firebase.auth
    }
}

const mapDispatchToProps = (dispatch) => {
    return {
        signUp: (newUser) => dispatch(signUp(newUser))
    }
}

export default connect (mapStateToProps, mapDispatchToProps)(AddUser);

Я выполняю действие аутентификации в authAction с помощью:

export const signUp = (newUser) => {
    return (dispatch, getState, {getFirebase, getFirestore}) => {
        const firebase = getFirebase();
        const firestore = getFirestore();

        firebase.auth().createUserWithEmailAndPassword(
            newUser.email,
            newUser.password
        ).then((resp) =>{
            return firestore.collection('users').doc(resp.user.uid).set({
                name: newUser.name,
                position: newUser.position,
                department: newUser.department
            })
        }).then(() => {
            dispatch({ type: 'SIGNUP_SUCCESS' })
        }).catch(err => {
            dispatch({ type: 'SIGNUP_ERROR', err})
        })
    }
}

мой редуктор регистрации:

    case 'SIGNUP_SUCCESS':
        console.log('Signup success');
        return {
            ...state,
            authError: null
        }
    case 'SIGNUP_ERROR': 
    console.log('signup error');
    return {
        ...state,
        authError: action.err.message
    }

Проблема в том, что это создает пользователя и выполняет вход в систему, но не создает документ с данными пользователя в коллекции firestore. На консоли ошибок не возникает. он также не регистрирует сообщение об успешном выполнении. Пользователь создан и может войти в систему. Что я делаю не так? Пожалуйста, помогите.

Спасибо!

1 Ответ

0 голосов
/ 12 июля 2020

Правильно ли я понимаю, что это асинхронный c процесс? Если да, вам также следует использовать для этого библиотеку Redux-Saga (я имею в виду, что это было бы лучше). Однако, если вы не желаете реализовать это, попробуйте добавить данные журнала отладчика или консоли в действие регистрации, прежде чем вернуться, чтобы проверить, передаете ли вы правильные данные в правильном формате для firebase. То же самое касается блока catch, ошибки журнала консоли, я могу сказать полезную информацию, если ошибка находится в запросе / ответе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...