angularfire2是否可以使用item的查询来更新多个项目。$ key
例如,如果我有这个数据库树
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 :(得分:1)
要更新任何数量,您需要该特定项目的键。
左说,示例中item1的键是' -KpZqM09AEDkhuIYAHSt'然后为了更新item1的数量,你需要参考
Project/items/-KpZqM09AEDkhuIYAHSt
所以要更新所有数量为=== 0到30的条目,你可以这样做:
使用ref(' items')
使用forEach迭代项目,并将数量为=== 0的所有项目的键存储在数组中。使用 .key 获取项目中每个项目的键
var keyArray = [];
firebase.database().ref('items').once('value', data => {
data.forEach(item => {
if (item.val().qty === 0) {
keyArray.push(item.key);
}
});
});
获得密钥后,使用ref(' items /' + keyOfItem)迭代该密钥数组和每个密钥调用firebase update()方法
keyArray.forEach(keyOfItem => {
firebase.database().ref('item/' + keyOfItem).update({
quantity: 30
});
}
//here keyOfItem is key of item having qty===0
不要忘记once()返回一个应该首先解析的promise以使第二个代码工作,否则你将keyArray变为空。
希望您觉得这很有帮助。