在 AngularFire 中使用 .numChildren()

Using .numChildren() in 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

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

您的代码片段没有使用 AngularFire,它只使用了 Firebase JavaScript SDK。虽然你的项目无疑用到了AngularFire,但是和这个问题无关

当你看documentation for the .child() method in the Firebase JavaScript SDK, you'll see that it returns a Firebase reference的时候。如果你进一步研究 class,你应该注意到它没有 numChildren 方法。

numChildren is only available on a DataSnapshot object,您可以在任何 on(... 事件处理程序中获得。

所以:

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

由于快照将被异步加载,您不能 return 来自 getServiceProviders 的 children 的数量。请参阅我对这个问题的回答以获得更广泛的解释:Asynchronous access to an array in Firebase