如何从Ionic App中显示的Firebase数据中隐藏当前用户的数据

时间:2018-08-03 06:33:01

标签: typescript firebase ionic-framework firebase-authentication ionic3

我的问题是,我正在显示Firebase数据库中的所有数据,但其中还包括当前登录用户的数据。例如,如果用户的个人资料包含:firstName =“ Sasha”, lastName =“ Parks”,语言=“ Creole”,她将在显示的数据上看到自己的个人资料。

如何修改此代码以隐藏自己的数据?

我页面的ts文件:

import { Component, OnInit } from '@angular/core';
import { NavController } from 'ionic-angular';
import { ProfilePage } from '../profile/profile';

import { AngularFireAuth } from 'angularfire2/auth';
import { AngularFireDatabase } from 'angularfire2/database';

import { Profile } from '../../models/profile.interface';

import { Observable } from 'rxjs';

@Component({
 selector: 'page-matches',
 templateUrl: 'matches.html'
})

export class MatchesPage {
 profile = {} as Profile;
 profileData: Observable<Profile[]>;

 goProfilematches = ProfilePage;

constructor(private afAuth: AngularFireAuth, private db: AngularFireDatabase, 
   public navCtrl: NavController) {
}

ionViewWillLoad(){

this.afAuth.authState.subscribe(data => {

    if (data && data.email && data.uid) {
    this.profileData = this.db.list('profile/'+data.uid).valueChanges();
    } else {
  }
});
}   

}

html:

<ion-header>
 <ion-toolbar>
  <ion-buttons start>
  <button ion-button [navPush]="goProfilematches">
    <ion-icon name="contact"></ion-icon>
  </button>
  </ion-buttons>
 <ion-title>Matches</ion-title>
 </ion-toolbar>
</ion-header>

<ion-content padding>

<ion-list>
    <ion-item *ngFor="let profile of profileData | async">
    <h1>First Name: {{profile?.firstName}}</h1>
    <p>Last Name: {{profile?.lastName}}</p>
    <p>Language: {{profile?.language}}</p>
    </ion-item>
</ion-list>

</ion-content>

Firebase数据库分为“身份验证”和“实时数据库”部分,用户在其中使用他们的电子邮件和密码进行注册,然后填写存储在实时数据库中的配置文件。

感谢您的帮助! 任何帮助总是很感激。谢谢!

1 个答案:

答案 0 :(得分:1)

您必须在当前用户登录的情况下,在ionViewWillLoad中添加一个变量,

var user_id = firebase.auth().currentUser;

并更改条件

  if (data && data.email && data.uid) {

if (data && data.email && data.uid && data.uid!=user_id) {