Angularfire2-是否可以通过查询更新firebase列表的数据?
Is angularfire2可以通过使用项目的查询更新多个项目。$key 例如,如果我有这个数据库树Angularfire2-是否可以通过查询更新firebase列表的数据?,angular,firebase,firebase-realtime-database,ionic2,angularfire,Angular,Firebase,Firebase Realtime Database,Ionic2,Angularfire,Is angularfire2可以通过使用项目的查询更新多个项目。$key 例如,如果我有这个数据库树 Project --- items ------- {{key}} ------------ name: item1 ------------ quantity : 0 ------- {{key}} ------------ name: item2 ------------ quantity : 0 ------- {{key}} ------------ name: i
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或Ionic 2中的任何其他方式是否可能?要更新任何数量,您需要该特定项目的密钥。例如,您的示例中项目1的密钥是“-KpZqM09AEDkhuIYAHSt”,然后为了更新项目1的数量,您需要
Project/items/-KpZqM09AEDkhuIYAHSt
因此,要更新所有数量===0到30的条目,可以执行以下操作:
使用firebase的带有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);
}
});
});
一旦你得到了这些键,就在这个键数组上迭代,并且对于每个键调用firebase更新方法,使用ref'items/'+keyOfItem
keyArray.forEach(keyOfItem => {
firebase.database().ref('item/' + keyOfItem).update({
quantity: 30
});
}
//here keyOfItem is key of item having qty===0
不要忘记,once返回一个承诺,应该首先解决该承诺,以使第二个代码正常工作,否则您将得到keyArray为空。
希望这对你有所帮助