更新 Firebase 子项的值

Update Value of Firebase Children

我正在尝试更新 Firebase 中我的 services 项的所有子项的 "name",以删除所有前导和尾随空格。我正在使用正则表达式来执行此操作,但我似乎无法弄清楚为什么它不起作用。

我正在使用快照上的 .forEach 遍历我的 services 项目,但它似乎没有将新值保存到 Firebase。

这是因为我应该在 $firebaseObject 上使用 $save 吗?

这是我的代码的样子:

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

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

您缺少 item.name.replace 而不是 name.replace:

var item = serviceSnap;
item.name = item.name.replace(/^\s+|\s+$/g,'');
item.$save();

原来我只能在 $firebaseObject 上使用 AngularFire 的 $save() 方法,所以我使用了不同的技术:

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

希望这对其他人有帮助。