在 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
我正在尝试在 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