【发布时间】:2019-04-05 21:26:01
【问题描述】:
我正在尝试使用删除按钮显示事件列表,并且只能由事件创建者删除。但是当我尝试删除它时,它会删除所有其他事件。我实际上是在尝试通过键值从 firebase-realtime-database 中删除,但 event.id 返回未定义,我猜它会删除整个文件夹。
我的home.html,显示数据,可以直接从这个页面删除
<ion-card *ngFor="let event of eventList$ | async">
<ion-item>
<h4>{{event.name}}</h4>
</ion-item>
<ion-item>
<h4>{{event.location}}</h4>
<ion-buttons end>
<button ion-button icon-only (click)="checkUser(event)">
<ion-icon name="trash"></ion-icon>
</button>
</ion-buttons>
</ion-item>
</ion-card>
我的家.ts
this.database.list<EventModels>('event-list').valueChanges().subscribe((eventData) => {
}, (err)=>{
console.log("Error while retrieving event details : ", err);
});
this.eventListRef$ = this.database.list<EventModels>('event-list');
this.eventList$ = this.eventListRef$.valueChanges();
checkUser(event: EventModels) {
console.log(event.id, event.name);
if(firebase.auth().currentUser.email == event.creator) {
let alert = this.alertCtrl.create({
title: 'Confirm Delete.',
message: 'You cannot recover this event once it is deleted.',
buttons: [
{
text: 'Yes',
role: 'destructive',
handler: () => {
this.eventListRef$.remove(event.id);
}
},
{
text: 'Cancel',
role: 'cancel'
}
]
}).present();
} else{
let alert = this.alertCtrl.create({
title: 'Could Not Delete Event!',
subTitle: 'This event does not belong to you.',
buttons: ['Dismiss']
});
alert.present();
}
}
我的 EventModels,models 文件夹中的 events.ts
export interface EventModels {
id?: string;
creator: any;
name: string;
location: string;
start: any;
end: any;
time: any;
}
我尝试使用$key?: String,但它仍然返回未定义
创建事件
addEvent = {} as EventModels;
eventRef$: AngularFireList<EventModels>;
this.eventRef$ = this.database.list('event-list');
save(addEvent: EventModels){
this.eventRef$.push({
creator: firebase.auth().currentUser.email,
name: this.addEvent.name,
location: this.addEvent.location,
start: this.addEvent.start,
end: this.addEvent.end,
time: this.addEvent.time,
});
this.addEvent = {} as EventModels;
this.navCtrl.pop()
}
【问题讨论】:
-
您应该分享
eventList$的创建方式。您是否使用snapshotChanges()并向每个EventModels对象添加键/ID?id是否明确包含在数据库中的每个EventModels对象中? -
我已经更新了它,我不知道如何实现它,我对 ionic 很陌生,我遵循的教程有点过时了。
-
如果
console.log()是subscribe()中eventData的值,您是否看到数组/流中每个项目的id?您能否分享您的 Firebase RTDB 的event-list中的子项的外观?
标签: typescript firebase ionic-framework firebase-realtime-database