Angularfire2 - 可以通过查询更新Firebase列表的数据吗?

问题描述:

是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?

要更新任何数量,您需要该特定项目的密钥

说,物品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为空的解决。
    希望你觉得这有帮助。