我试图在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
。
感谢任何帮助。提前谢谢!
答案 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