我的问题是,我正在显示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数据库分为“身份验证”和“实时数据库”部分,用户在其中使用他们的电子邮件和密码进行注册,然后填写存储在实时数据库中的配置文件。
感谢您的帮助! 任何帮助总是很感激。谢谢!
答案 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) {