Android 在firebase中获取嵌套数据
我有一个firebase数据库,如下图所示 我想创建一个函数Android 在firebase中获取嵌套数据,android,firebase-realtime-database,Android,Firebase Realtime Database,我有一个firebase数据库,如下图所示 我想创建一个函数public int-getTotalInvites(int-userId),它返回嵌套用户的受邀请用户数 例如:getTotalInvites(1)返回6,因为用户1邀请用户2(用户2邀请用户5和6)、3和用户4(用户4邀请用户7),所以总数是6 我想使函数递归,但Firebase使用回调。由于邀请计数所需的所有数据都存储在单个节点下,因此可以使用单个ValueEventListener执行整个计算 大概是这样的: Database
public int-getTotalInvites(int-userId)
,它返回嵌套用户的受邀请用户数
例如:getTotalInvites(1)
返回6,因为用户1邀请用户2(用户2邀请用户5和6)、3和用户4(用户4邀请用户7),所以总数是6
我想使函数递归,但Firebase使用回调。由于邀请计数所需的所有数据都存储在单个节点下,因此可以使用单个
ValueEventListener执行整个计算
大概是这样的:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("users");
ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
long count = 0;
for (DataSnapshot userSnapshot: dataSnapshot.getChildren()) {
count = count + userSnapshot.child("invitedUsers").getChildrenCount();
}
System.out.println(count);
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
}
上面的代码处理一个用户列表,每个用户都有一个inviteCount
。如果存在某种用户树,您可能需要使用类似于countUsers(DataSnapshot snapshot)
的东西递归地降低该树,您可以从onDataChange
中调用它。但是,由于您的JSON非常简单,这里不需要这样做。我不确定自己是否理解,但怀疑添加更多的单词是否有助于澄清。你能编辑你的问题来显示你已经尝试过的代码吗?我没有代码,我想做这个函数,但我不知道