Я играю с Firebase в Angular2, и я застрял в доступе к this
в обещании.Доступ к этому в Firebase Angular2 обещание
Вот мой сценарий. Для понимания контекста: при регистрации я хочу проверить, что базовые данные в базе данных, связанные с этим пользователем, все еще актуальны.
import { Injectable, Inject } from '@angular/core';
import { AngularFire, AuthProviders, FirebaseAuthState, FirebaseApp } from 'angularfire2';
@Injectable()
export class AuthService {
user;
userUID;
userEmail;
isAuthenticated: boolean = false;
constructor(public af: AngularFire, @Inject(FirebaseApp) firebaseApp: firebase.app.App) {
this.af.auth.subscribe(authState => {
if (authState && !authState.auth.isAnonymous) {
this.user = authState;
this.isAuthenticated = true;
this.userEmail = this.user.auth.email;
this.userUID = this.user.auth.uid;
firebaseApp.database().ref('/users/' + this.userUID).once('value').then(function(snapshot) {
if (snapshot.val().email !== this.userEmail) { //ERROR HERE
console.log('update the email in database here');
}
});
console.log('User Logged in', this.user, this.userEmail, this.userUID);
return;
}
this.logout();
console.log('User Not Authenticated', this.user);
});
}
Ошибка, конечно, на линии, где я хочу сделать такое сравнение:
if (snapshot.val().email !== this.userEmail)
Я знаю, что в JavaScript/машинопись очень раздражает, и я не могу найти способ, чтобы получить мой скрипт работает.
Спасибо, что работает как ожидается ... Должен работать над своими навыками машинописи. – BlackHoleGalaxy