【问题标题】:Stuck at deleting parent pushed key by value/childkey卡在按值/子键删除父推送键
【发布时间】:2017-11-27 11:20:00
【问题描述】:

我想按值/子键删除父按键:

export class FaqsPage {
  qS: Observable<any[]>;
  ques = '';
  ans = '';

constructor(private db: AngularFireDatabase) {}
ionViewDidLoad() { this.qS = this.db.list('table/faq').valueChanges(); }

removeItem(id){this.db.list('table/faq').remove(id);}

removeItem() 删除所有按键。难怪,因为我无法获得父密钥

//faq.html
<ion-list>
    <ion-item-sliding *ngFor="let el of qS | async">
      <ion-item>
        <b>{{ el.Q }}</b><br>{{ el.A }}
      </ion-item>
      <ion-item-options side="right">
        <button ion-button color="red" icon-only (click)="removeItem(el.key)"><ion-icon name="trash"></ion-icon></button>
      </ion-item-options>
    </ion-item-sliding>
  </ion-list>
由于 valueChanges()el.key 没有得到密钥(例如 Kzwv8d_i-0QZuf2NT8Z) strong>,我不知道如何在当前迭代中

【问题讨论】:

  • 您需要使用.snapshotChanges() 而不是valueChanges() 来获取密钥
  • 但我无法通过snapshotChanges()获取子键和值
  • 发布你尝试过的代码

标签: javascript firebase firebase-realtime-database ionic2 angularfire


【解决方案1】:

我希望你正在使用 angularfire2

this.qS = this.db.list('table/faq').snapshotChanges().map(changes => {
  return changes.map(c => ({ key: c.payload.key, ...c.payload.val() }));
});

这将返回带有密钥的qS

【讨论】:

  • 感谢 Hareesh,这是一条线索。现在我可以做到了
猜你喜欢
  • 1970-01-01
  • 2021-01-25
  • 2017-12-08
  • 2014-09-07
  • 2012-05-15
  • 2020-06-21
  • 1970-01-01
  • 1970-01-01
  • 2011-03-25
相关资源
最近更新 更多