java从两个Firebase数据库表获取所有数据
我在firebase数据库中有两个表
Table A : Table B:
a a 2 pic
b b 3 pic
c
d d 1 pic
e
结果如下:
a 2 pic
b 3 pic
d 1 pic
我需要的结果如下:
a 2 pic
b 3 pic
c 0 pic
d 1 pic
e 0 pic
我不知道如何编写查询
我编写查询时,就好像表a中的a等于表B中的a,然后a将显示2张图片。这样,a、b和d显示。但是c和e在表B中没有显示为c和e不相等。我想用0张图片显示c和e
我所尝试的:
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
list = new ArrayList<ListType>();
list.clear();
for(DataSnapshot ds:dataSnapshot.getChildren()) {
ListType listType = ds.getValue(ListType.class);
final String listname = listType.getName();
databaseReference1.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot postSnapshot:dataSnapshot.getChildren()) {
if (postSnapshot.getKey().equals(listname)) {
String count = String.valueOf(postSnapshot.getChildrenCount());
ListType listTypee = new ListType(listname, count);
list.add(listTypee);
adapter.notifyDataSetChanged();
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
# 1 楼答案
您现在正在表B中的所有节点上循环,并将它们的计数添加到列表中。但是由于C和E不在表B中,它们永远不会出现在列表中
我会把逻辑颠倒过来,然后:
在代码中,类似于:
请注意,循环中的各个侦听器并不像您想象的那么慢,因为Firebase pipelines the requests