【问题标题】:How to delete item from firebase list如何从firebase列表中删除项目
【发布时间】: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) 这一行的输出吗?

标签: javascript firebase ionic-framework firebase-realtime-database


【解决方案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});
    } 
    

    【讨论】:

      猜你喜欢
      • 2020-02-16
      • 1970-01-01
      • 2021-10-05
      • 1970-01-01
      • 2021-07-19
      • 2016-03-12
      • 1970-01-01
      • 2016-07-15
      相关资源
      最近更新 更多