2017-06-08 6 views
0

Ionic Appでanglefire2を使用しています。 firebaseノードからユーザIDと一致するすべてのエントリを削除しようとしています。ロイヤリティポイントノードがあり、リセット機能を実行すると、そのユーザーに関連するloyaltypointsノードからすべてのエントリを削除したいと考えています。Angularfire2は一致するUserIDを持つすべてのアイテムを削除します

Image of firebase list showing all entries with matching userId

私は、コンストラクタにこれを追加することによって「myPoints」と呼ばれる変数にすべてのエントリを取得するために管理している:

this.angularfire.auth.subscribe(res => { 
    if (res != null) { 
    let userID = res.auth.uid; 
    this.af.list('/loyaltypoints', { 
     query: { 
      orderByChild: 'userId', 
      equalTo: userID, 
     } 
    }).subscribe(response => { 
     this.myPoints = response; 
    }) 
    } 
}) 

私は上のremove()関数を実行する方法を知りませんthis.myPoints変数を使用してこれらのエントリをすべて削除します。

はあなたに感謝


だから、これはすべてのインポートの最初はそうのように取る、私のために働くようだUPDATE: インポート 'rxjs /追加/オペレータ/取ります';

は、このコードは、すべての関連firebaseのエントリを削除します。

this.angularfire.auth.subscribe(res => { 
     if (res != null) { 
      let userID = res.auth.uid; 
      this.af.list('/loyaltypoints', { 
       preserveSnapshot: true, 
       query: { 
        orderByChild: 'userId', 
        equalTo: userID, 
       } 
      }).take(1).subscribe(response => { 
       console.log(response) 
       response.forEach((snapshot) => { 
        this.af.object('/loyaltypoints/' + snapshot.key).remove(); 
       }) 

      }) 
     } 
    }) 

答えて

2

それであなたは、各loyaltypointsエントリに対応したキーを取得している欠けています。

this.angularfire.auth.subscribe(res => { 
if (res != null) { 
let userID = res.auth.uid; 
this.af.list('/loyaltypoints', { 
    preserveSnapshot: true, 
    query: { 
     orderByChild: 'userId', 
     equalTo: userID, 
    } 
}).take(1).subscribe(snaphots=> { 
    snapshots.forEach((snapshot) => { 
     this.af.object('/loyaltypoints/' + snapshot.key).remove(); 
    }) 

}) 
} 
}) 

あなたは私がテイクを追加気付いた場合、私はあなたがあまりにも加入したノードを変更している場合ので、(1)、それが再びデータのフェッチをトリガします。あなたはそれが正しいことを確認するためにこれと少し遊ばなければならないかもしれません。

+0

これを試してみましたが、私はそれをすべてエラーなしで持っていますが、ionic serve -labを実行すると、forEachが不定になっています。私はconsole.log(this.snapshots)を実行し、それは未定義に戻った。だから1をとり、それを購読すると何も得られないでしょうか? –

+0

何らかの理由で私は変数 'snapshots'を 'response'に変更しました。あなたはそれを信じますか?どのように非常に奇妙な?あなたの驚くべきガイダンスに感謝しています。私はあなたなしではできなかった! –