更新Firebase儿童的价值

时间:2015-05-12 16:18:48

标签: regex firebase angularfire

我试图更新"名称"对于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();
  });
});

感谢任何帮助。提前谢谢!

2 个答案:

答案 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();
   });
 });

希望这有助于其他人。