Я использую аутентификацию firebase и angularfirestore в своем приложении, и я столкнулся со странной проблемой. Я хочу удалить пользовательский документ в firestore после удаления пользователя в firebase auth, как показано ниже, но часть firestore не работает.
Edit 2 : в коде this.currentUser
не то же самое, что angularFireAuth.auth.currentUser
. Это локальная переменная, которую я создал отдельно.
return this.angularFireAuth.auth.currentUser.delete().then(() => {
this.angularFirestore.collection("userData").doc(this.currentUser.email).delete().then(() => {
this.currentUser = null;
this.currentUserSubject$.next(this.currentUser);
this.setAuthenticationDetails({authType: null, rememberMe: false});
this.storageService.setRememberedUser(null);
});
})
Однако, если бы я сначала удалил документ из firestore, а потом удалил пользователя из firebase auth, это сработает.
return this.angularFirestore.collection("userData").doc(this.currentUser.email).delete().then(() => {
return this.angularFireAuth.auth.currentUser.delete().then(() => {
this.currentUser = null;
this.currentUserSubject$.next(this.currentUser);
this.setAuthenticationDetails({authType: null, rememberMe: false});
this.storageService.setRememberedUser(null);
});
})
Кто-нибудь знает, почему это происходит? Они оба возвращают обещания, поэтому я ожидал, что поведение будет одинаковым.
Edit 1 : добавлен улов, но ничего не печатается
return this.angularFireAuth.auth.currentUser.delete().then(() => {
return this.angularFirestore.collection("userData").doc(this.currentUser.email).delete().then(() => {
this.currentUser = null;
this.currentUserSubject$.next(this.currentUser);
this.setAuthenticationDetails({authType: null, rememberMe: false});
this.storageService.setRememberedUser(null);
}, (error) => {
console.log(error);
});
}, (error) => {
console.log(error);
})
Edit 3 : Правила безопасности
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}