Angularfire2 - 是否可以通过查询更新 firebase 列表的数据?
Angularfire2 - Is possible to update the data of firebase list by query?
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 或任何其他方式?
要更新任何数量,您需要该特定项目的键。
比如说,您的示例中 item1 的键是 '-KpZqM09AEDkhuIYAHSt' 那么为了更新 item1 的数量,您需要参考
Project/items/-KpZqM09AEDkhuIYAHSt
因此,要将所有数量===0 的条目更新为 30,您可以这样做:
使用 firebase 的 once() 方法和 ref('items')
获取所有 items
使用 forEach 遍历项目,并将数量 ===0 的所有项目的键存储在一个数组中。使用.key获取items
中每一项的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() returns 一个应首先解决的承诺,以使第二个代码正常工作,否则您将获得空的 keyArray。
希望这对您有所帮助。
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 或任何其他方式?
要更新任何数量,您需要该特定项目的键。
比如说,您的示例中 item1 的键是 '-KpZqM09AEDkhuIYAHSt' 那么为了更新 item1 的数量,您需要参考
Project/items/-KpZqM09AEDkhuIYAHSt
因此,要将所有数量===0 的条目更新为 30,您可以这样做:
使用 firebase 的 once() 方法和 ref('items')
获取所有 items
使用 forEach 遍历项目,并将数量 ===0 的所有项目的键存储在一个数组中。使用.key获取items
中每一项的keyvar 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() returns 一个应首先解决的承诺,以使第二个代码正常工作,否则您将获得空的 keyArray。
希望这对您有所帮助。