【问题标题】:Push Firebase .key() to Object将 Firebase .key() 推送到对象
【发布时间】:2015-01-22 00:33:09
【问题描述】:

我有一个相当简单的createService 函数,可以将数据发送到我的 Firebase。运行时,它将我的$scope.serviceTitle 推送到名为services 的对象,并将我的$scope.providerTitle 推送到名为providers 的对象。

ma​​in.js

$scope.createService = function() {
  var newService = { title: $scope.serviceTitle };
  var newProvider = { title: $scope.providerTitle };

  var servicePromise = ServiceService.add(newService);
  var providerPromise = ProviderService.add(newProvider);
};

ServiceService.js

angular.module('outcomesApp').service('ServiceService', function(FBURL, $firebase) {
  var serviceRef = new Firebase(FBURL).child('services');
  var fireService = $firebase(serviceRef).$asArray();

  return {
    add: function addService(service) {
      return fireService.$add(service);
    }
  };
});

我的数据最终看起来像这样:

{
  "services": {
    "-JgDvQz_opBMdULBPySG": {
      "title": "Hernia Repair"
    }
  },
  "providers": {
    "-JgDp4zieowSM-ymfDHR": {
      "title": "The Whittington Hospital",
    }
  }
}

我想在运行createService() 函数时推送第三个对象,称为service_at_provider,其中service 具有我刚刚推送的服务.key() 的值,provider 具有值提供者key()。这可能有助于理解我想要实现的目标:

{
  "services": {
    "-JgDvQz_opBMdULBPySG": {
      "title": "Hernia Repair"
    }
  },
  "providers": {
    "-JgDp4zieowSM-ymfDHR": {
      "title": "The Whittington Hospital",
    }
  },
  "service_at_provider": {
    "-JgDvQzYxtYGp7JspWYr": {
      "service": "-JgDvQz_opBMdULBPySG", // matches the 'newService' just pushed
      "provider": "-JgDp4zieowSM-ymfDHR" // matches the 'newProvider' just pushed
    }
  }
}

由于$addservicePromise 变量返回了一个承诺。但我不知道如何在同一推送中返回 key() 并将其传递给名为 service_at_provider 的新对象。

这可能吗?

【问题讨论】:

    标签: javascript firebase angularfire


    【解决方案1】:

    $add() 返回的承诺解析为新的 firebase 引用。您可以在 createService 中执行以下操作。

    $q.all([servicePromise, providerPromise]).then(function(refs) {
      var serviceRef = refs[0];
      var providerRef = refs[1];
    
      // service key
      serviceRef.key();
    
      // provider key
      providerRef.key();
    
      // Use that data to add to your service_at_provider array
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-13
      • 2020-08-29
      • 2018-04-26
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      相关资源
      最近更新 更多