我想在firebase ref上使用update()来在一次操作中更新许多子节点。 为此,我传递了带有要更改值的对象。
这是console.log(angular.toJson(change,1))
的输出{
"10": {
"otherRubies": 30
},
"11": {
"otherRubies": 30
}
}
一开始我有:
然后我做:
var refUsers = new Firebase(FBURL).child('users/');
refUsers.update(change);
所以我希望:
但不是我得到:
有没有办法做到这一点?
答案 0 :(得分:5)
更新不是递归操作。所以它在子路径上调用set。如果你在users /上调用update,你说不要删除user /下不在我的数据中的任何键,当你想说,不要删除用户/的子记录中的任何键。 p>
相反,迭代记录并在每个记录上调用update:
var refUsers = new Firebase(FBURL).child('users/');
for(key in change) {
if( change.hasOwnProperty(key) ) {
refUsers.child(key).update( change[key] );
}
}
答案 1 :(得分:0)
使用Firebase 3,您可以通过以下方式进行更新:
update = {};
update['10/otherRubies'] = 30;
update['11/otherRubies'] = 30;
refUsers.update(change);
这种更新数据的方式不在文档中,但它对我有用。
答案 2 :(得分:0)
这是递归更新的示例:
function updateRecursively(path, value) {
for (let key in value) {
if (value[key] instanceof Object) {
updateRecursively(`${path}/${key}`, value[key]);
} else {
firebase.database().ref(`${path}/${key}`).set(value[key]);
}
}
}
用法:
updateRecursively('users', {
"10": {
"otherRubies": 30
},
"11": {
"otherRubies": 30
}
})