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