如何从firebase列表中删除项目
Posted
技术标签:
【中文标题】如何从firebase列表中删除项目【英文标题】:How to delete item from firebase list 【发布时间】:2018-09-27 15:20:34 【问题描述】:我有这样的 firebase(实时数据库)简单结构:
列出视图中的所有项目:
<ion-list>
<ion-item *ngFor="let item of arrData; let i = index" (click)="delete(item)">
i+1. item.name<small> - item.address</small>
</ion-item>
</ion-list>
在控制器中定义了数据库,因为显示和添加数据正在工作:
arrData = []
constructor(public navCtrl: NavController, private fdb: AngularFireDatabase)
this.fdb.list("/schools/").valueChanges().subscribe(data =>
this.arrData = data;
console.log(this.arrData);
)
btnAddClicked()
this.fdb.list("/schools/").push(name:this.schoolName, address:this.schoolAddress);
我想在项目被选中(点击)时删除它。从文档中我了解到可以使用 .remove(),只需要项目的路径。但为此,我需要获取自动生成的密钥。如何得到它?还是有其他方法可以删除所选项目?
【问题讨论】:
你能显示console.log(this.arrData)
这一行的输出吗?
【参考方案1】:
感谢this 的帖子,找到了解决方案。也许不是最漂亮的,但很有效:
delete(item)
var db = this.fdb.database.ref();
var query = this.fdb.database.ref("schools").orderByKey();
query.once("value")
.then(function(snapshot)
snapshot.forEach(function(childSnapshot)
var pkey = childSnapshot.key;
var chval = childSnapshot.val();
//check if remove this child
if(chval.name == item.name && chval.address == item.address)
db.child("schools/"+pkey).remove();
return true;
);
);
【讨论】:
【参考方案2】:我认为您需要在代码中添加一些内容。我用你的代码 sn-p 来解决我的问题。行 chval = childSnapshot.val();应更改为带括号的 chval =childSnapshot.val。
deleteNote(key)
// var db = this.fdb.database.ref();
var query = firebase.database().ref('todo').orderByKey();
query.once("value")
.then(function(snapshot)
snapshot.forEach(function(childSnapshot)
var pkey = childSnapshot.key;
var chval = childSnapshot.val;
console.log(childSnapshot.val);
//check if remove this child
if(chval.note == key.note && chval.date == key.date)
firebase.database().ref().child("todo/"+pkey).remove();
return true;
);
);
this.state.noteArray.splice(key, 1);
this.setState(noteArray: this.state.noteArray);
【讨论】:
以上是关于如何从firebase列表中删除项目的主要内容,如果未能解决你的问题,请参考以下文章
使用 android studio java Recycler 视图从 Firebase 实时数据库中删除一个节点
Flutter 和 Firebase:从 Firebase 中的数组中删除项目(地图)
XCode 未找到 Firebase v2.1.2(未找到框架错误)