#angular #typescript #firebase #ionic-framework
#angular #typescript #firebase #ионный фреймворк
Вопрос:
Я пытаюсь получить некоторую информацию о статусе пользователя (IsDeleted: true / false) из базы данных Firebase в реальном времени, когда пользователь хочет войти в мобильное приложение. При попытке этого я получил эту ошибку:
Свойство ‘then’ не существует для типа ‘void’
Код выглядит следующим образом:
login.page.ts
loginUser() {
const data = this.loginForm.value;
if (!data.userName) {
return;
}
this.loadingCtrl.create({
message: 'Loading...'
}).then((res) => {
res.present();
});
const credentials = {
email: data.userName this.username_domain,
password: data.password
};
this.authService.loginUser(credentials)
.then(res => {
this.userService.setOrgId(res.user.photoURL);
this.loadingCtrl.dismiss();
this.router.navigateByUrl('/tabs');
//The error occours here.
this.userService.getUserStatus().then((isDeleted: any) => {
console.log('isDeleted ', isDeleted)
if (isDeleted) {
err => {
this.loadingCtrl.dismiss();
this.toast = this.toastCtrl.create({
message: 'Your account is not active anymore.',
duration: 2000
});
}
this.authService.logoutUser()
.then(async (res) => {
this.clearLocalData();
this.navCtrl.navigateRoot('login');
})
.catch(error => {
console.log(error);
});
}
});
}, err => {
this.loadingCtrl.dismiss();
this.toast = this.toastCtrl.create({
message: err.message,
duration: 2000
}).then((toastData) => {
toastData.present();
});
});
}
user.service.ts
getUserStatus() {
firebase.database().ref(`organizationData/${this.orgId}/users/${this.uId}/isDeleted/`).get().then(function(snapshot) {
if (snapshot.exists()) {
console.log(snapshot.val());
}
else {
console.log("No data available");
}
}).catch(function(error) {
console.error(error);
});
}
Кто-нибудь знает, как это исправить?
Ответ №1:
getUserStatus()
ничего не возвращает, вам нужно сделать следующее:
getUserStatus() : Promise<DataSnapshot> {
return firebase.database().ref(`organizationData/${this.orgId}/users/${this.uId}/isDeleted/`).get();
}
Комментарии:
1. Это устранило проблему. Большое спасибо, Питер.
2. Но теперь я не получаю флаг в функцию login.page.ts. У вас также может быть решение для этого?
3. вы это
isDeleted
понимаете?4. Я получаю user.service.ts: 51: «true», но login.page.ts: 84: «не определено». Извините, но я совсем новичок в TS.
5. вы изменили служебную функцию, как я сказал? Попробуйте использовать
.then((snapshot: DataSnapshot) => {