我试图更新"名称"对于Firebase中services
项的所有子项,删除所有前导和尾随空格。我正在使用正则表达式来实现这一点,但我似乎无法弄清楚它为什么不起作用。
我在其快照上使用services
循环浏览了我的.forEach
项目,但它似乎没有将新值保存到Firebase。
这是因为我应该在$save
上使用$firebaseObject
吗?
这就是我的代码:
var servicesRef = ref.child('services');
servicesRef.on('value', function(snap) {
snap.forEach(function(serviceSnap) {
var item = serviceSnap;
item.name = name.replace(/^\s+|\s+$/g,'');
item.$save();
});
});
感谢任何帮助。提前谢谢!
答案 0 :(得分:0)
您缺少item.name.replace而不是name.replace:
var item = serviceSnap;
item.name = item.name.replace(/^\s+|\s+$/g,'');
item.$save();
答案 1 :(得分:0)
原来我只能在$save()
上使用AngularFire的$firebaseObject
方法,所以我使用了不同的技术:
var obj = $firebaseObject(servicesRef);
obj.$loaded().then(function() {
angular.forEach(obj, function(value, key) {
var singleServiceRef = servicesRef.child(key);
var serviceObj = $firebaseObject(singleServiceRef);
var name = value.name;
name = name.replace(/^\s+|\s+$/g,'');
serviceObj.name = name;
serviceObj.$save();
});
});
希望这有助于其他人。