在AngularFire中使用.numChildren()

时间:2015-04-24 14:00:02

标签: firebase angularfire

我试图在AngularFire中使用.numChildren(),但不确定我是否正确使用它。

function getServiceProviders(serviceId) {
  var serviceProviders = ref.child('services').child(serviceId).child('providers');
  return serviceProviders.numChildren();
}

我收到以下错误:

TypeError: e.numChildren is not a function

不确定这是否是由于我使用Browserify,或者我只是试图错误地访问numChildren

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

1 个答案:

答案 0 :(得分:3)

您的代码段不使用AngularFire,它只使用Firebase JavaScript SDK。虽然您的项目无疑使用AngularFire,但它与此问题无关。

当您查看documentation for the .child() method in the Firebase JavaScript SDK时,您会看到它返回Firebase reference。如果你进一步研究那个课程,你应该注意到它没有numChildren方法。

numChildren仅适用于DataSnapshot对象,您可以在任何on(...事件处理程序中获取该对象。

所以:

serviceProviders.on('value', function(snapshot) {
  console.log(snapshot.numChildren());
}

由于快照将以异步方式加载,因此您无法从getServiceProviders返回子项数。请参阅我对此问题的回答,以获得更广泛的解释:Asynchronous access to an array in Firebase