Я создаю форму регистрации для вставки данных в пользователей аутентификации firebase и дополнительных данных в документ пользователей. Ниже приведены действия для регистрации.
export const signUp = (newUser) => {
return async(dispatch, getState, {getFirebase, getFirestore}) => {
const firebase = getFirebase();
const firestore = getFirestore();
try{
const {user} = await firebase.auth().createUserWithEmailAndPassword(
newUser.email,
newUser.password
);
if(user)
{
const userRef = firestore.doc(`users/${user.uid}`);
const snapshot = await userRef.get();
if(!snapshot.exists) {
try{
await userRef.set({
firstName: newUser.firstName,
lastName: newUser.lastName,
initials: newUser.firstName[0] + newUser.lastName[0],
dob: newUser.dob
})
dispatch({ type: 'SIGNUP_SUCCESS' });
}
catch(err){
throw new Error(`user creating error:${err}`)
}
}
else{
throw new Error(`Authenticate user not created`)
}
}
else{
throw new Error(`Authenticate user not able to create", error`)
}
}
catch(err){
dispatch({ type: 'SIGNUP_ERROR', err});
}
}
}
Я пытаюсь принудительно вставить данные в оба документа или в любой из них, если в какой-то момент возникнут ошибки. например, если я передал неправильное значение в const userRef, вставку в аутентификацию пользователей следует отменить, но приведенный выше код не работает.