2017-08-07 7 views
0

はangularfire2は、アイテムのinstaedクエリを使用して複数の項目を更新することができますです。$キーAngularfire2 - firebaseリストのデータをクエリで更新することはできますか?

たとえば私は、このデータベースツリー

Project 
--- items 
------- {{key}} 
------------ name: item1 
------------ quantity : 0 
------- {{key}} 
------------ name: item2 
------------ quantity : 0 
------- {{key}} 
------------ name: item3 
------------ quantity : 12 

を持っている場合、私は0が含まれている各項目の数量の値を更新したいですこの新しいデータベースツリーなどの数量を30に設定します。

Project 
--- items 
------- {{key}} 
------------ name: item1 
------------ quantity : 30 
------- {{key}} 
------------ name: item2 
------------ quantity : 30 
------- {{key}} 
------------ name: item3 
------------ quantity : 12 

これは、Ionic 2でforeachや他の方法を使用することで可能ですか?

答えて

0

個の数値をに更新するには、その特定のアイテムのキーが必要です。

言ってやる、あなたの例ではITEM1の鍵は、あなたがそうする数量=== 0を持つすべてのそれらのエントリを更新する

Project/items/-KpZqM09AEDkhuIYAHSt 

の参照が必要ITEM1の量を更新するために、その後「-KpZqM09AEDkhuIYAHSt」です30、あなたが行うことができます:

  • が私の上にすべての一度使用してアイテム()メソッドfirebaseのREFと( 'アイテム')

  • 反復を取得します配列に数量=== 0を持つすべてのアイテムのキーを格納します。あなたがキーを取得したら、項目の各項目のキーを取得するために.KEYを使用

    var keyArray = []; 
    firebase.database().ref('items').once('value', data => { 
        data.forEach(item => { 
         if (item.val().qty === 0) { 
          keyArray.push(item.key); 
         } 
        }); 
    }); 
    
  • 、キー配列することを反復処理とrefを持つすべてのキーコールfirebase update()メソッドのための(「アイテム/」 + keyOfItem)

    keyArray.forEach(keyOfItem => { 
    firebase.database().ref('item/' + keyOfItem).update({ 
          quantity: 30 
         }); 
    } 
    //here keyOfItem is key of item having qty===0 
    

    はかつてのことを忘れないでください()がそうでなければ、空のようkeyArrayを取得する作業第二のコードを取得する最初に解決しなければならない約束を返します。
    この情報は役に立ちましたか?

関連する問題