2017-08-07 54 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 

這是可能的使用foreach或任何其他方式在離子2?

回答

0

要更新任何數量,您需要該特定項目的密鑰

說,物品1的在你的例子,關鍵是「-KpZqM09AEDkhuIYAHSt」,那麼,以更新的物品1,你需要的

Project/items/-KpZqM09AEDkhuIYAHSt 

因此,參考量來更新其數量=== 0所有條目30,你可以這樣做:

  • 抓取所有項目使用一次()方法火力與REF( '項目')

  • 遍歷我tems使用forEach並將數量=== 0的所有項的鍵存儲在數組中。使用。關鍵獲得在項目每個項目的關鍵

    var keyArray = []; 
    firebase.database().ref('items').once('value', data => { 
        data.forEach(item => { 
         if (item.val().qty === 0) { 
          keyArray.push(item.key); 
         } 
        }); 
    }); 
    
  • 一旦你拿到鑰匙,遍歷該鍵陣列和每個鍵呼叫火力update()方法與REF(「項目/」 + keyOfItem)

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

    不要忘了,一次()返回一個承諾,其應首先獲得第二個代碼的工作,否則你會得到keyArray爲空的解決。
    希望你覺得這有幫助。

相關問題