[英]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
}
}
}
由于$add
, servicePromise
变量返回一个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.