J'ai une méthode asynchrone comme ci-dessous. Il affiche une erreur [ts] 'await' expression is only allowed within an async function.
ici await userProfile.set({
. Pouvez-vous me dire comment faire le tri?
Note: C'est peut-être dû au fait que j'ai essayé d'appeler promise
à l'intérieur du observable
. Un indice?
async loginWithGoogle(): Promise<void> {
const result = await this.afAuth.auth.signInWithPopup(new firebase.auth.GoogleAuthProvider());
const userId: string = result.uid;
const userProfile: AngularFirestoreDocument<UserProfile> = this.fireStore.doc(`userProfile/${userId}`);
const userProfiles: AngularFirestoreCollection<UserProfile> = this.fireStore.collection('userProfile/', ref => ref.where('email', '==', result.email));
const userProfiles$: Observable<UserProfile[]> = userProfiles.valueChanges();
userProfiles$.subscribe(res => {
if (res == null) {
await userProfile.set({ //here it shows error
id: userId,
email: result.email,
creationTime: moment().format(),
lastSignInTime: moment().format()
});
}
});
}
Votre fonction principale est asynchrone mais vous utilisez await
dans une fonction de flèche qui n'est pas déclarée comme async
userProfiles$.subscribe(async res => {
if (res == null) {
await userProfile.set({
...