繁体   English   中英

将Firebase .key()推送到对象

[英]Push Firebase .key() to Object

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

main.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 createService()时推送第三个对象,其中service具有我刚刚推送的service .key()的值, provider具有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变量返回一个promise。 但是我无法弄清楚如何在同一次推送中返回key()并将其传递给名为service_at_provider的新对象。

这可能吗?

$ add()返回的promise解析为新的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
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM