У меня проблемы с firebase и expo. Когда мы выполняем процесс регистрации и пользователь создается с помощью firebase, мы иногда получаем «undefined не является объектом (оценка 0.docs [0] .data)», и пользователь перенаправляется на точку входа приложения вместо переход к следующему экрану.
Большинство пользователей смогут go пройти через этот процесс без каких-либо проблем. Но немногие сообщали об одних и тех же проблемах, и я видел это на одной учетной записи.
Здесь ниже функция, которая не работает должным образом
const createUser = async () => {
//Check if user already exists
await props.firebase.db
.collection('users')
.where('email', '==', props.userProfile.email)
.get()
.then(async (snapShot) => {
//if no document is found, save user to db
if (snapShot.docs.length === 0) {
await saveUserToDataBase()
.then(() => {
setShowLoader(false);
props.navigation.navigate('NotificationPermission');
})
.catch((err) => Alert.alert('An error occurred', err.message));
}
//else log an error, TODO: add error text in app.
else {
setShowLoader(false);
}
})
.catch((err) => {
Alert.alert('An error occurred', err.message);
});
};
const saveUserToDataBase = async () => {
//finds the correct collection and creates a new document within in containing the profile data.
await props.firebase.db
.collection('users')
.add({
first_name: props.userProfile.firstName,
email: props.userProfile.email.toLowerCase(),
phone_number: props.userProfile.phoneNumber,
organization: props.userProfile.organization,
profileId: props.userProfile.profileId,
})
.then(async (docRef) => {
await props.firebase.db
.collection('profile')
.doc(props.userProfile.profileId)
.update({
user_id: docRef.id,
})
.then(async () => {
await uploadProfilePhoto(docRef.id);
if (props.accessToken) {
props.navigation.navigate('NotificationPermission');
} else {
props.navigation.navigate('NotificationPermission');
}
})
.catch((err) => {
Alert.alert(
'An error occurred updating the users profile ',
err.message,
);
});
})
.catch((err) => {
Alert.alert('An error occurred creating the user', err.message);
});
};
Я использовал компонент Alert, чтобы проверить ошибку напрямую, ошибка согласуется с несколькими адресами электронной почты. Я обновил пакет firebase, ничего не делал. Я чувствую, что onAuthStateChanged
может быть ответственным за это, но я не уверен, как с этим справиться? Будем очень признательны за вашу помощь или предложения.