嗨,我一直关注this Question,我知道这可能是重复的问题,但我的总数为空。我需要用orderByChild()
和equalTo()
对所有子节点求和。我的Firebase结构。我需要总油量
预期产量
oil 83
更新
用户将在此处选择月份以查看费用,而我将从其他活动中获得费用。在Firebase结构中,
October_2018
是monthYr
MainActivity
listfirebaseref=FirebaseDatabase.getInstance().getReference("Expenses Details").child(username).child("Expense_Month").child(monthYr);
Log.d("TAG","before");
listfirebaseref.orderByChild("expensesName").equalTo("oil").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
int sum = 0;
for (DataSnapshot ds : dataSnapshot.getChildren()) {
for (DataSnapshot data : ds.getChildren()) {
Log.d("Tag", "on ");
Toast.makeText(MonthTotalexpenses.this,""+sum,Toast.LENGTH_SHORT).show();
Log.d("Tag", " " + sum);
}
}
Log.d("Tag", " list ");
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
我知道我已经接近了,但是我想念的地方。请帮助
我的日志
它不会打印此Log.d("Tag", " " + sum);
Firebase规则
{
"rules": {
".read": true,
".write": true
,"Expenses Details": {
".write": "query.orderByChild != null && query.equalTo != null",
"$uid": {
".indexOn": "expensesName"
}
}
}
}
如果我从
orderByChild
中删除了equalTo
和listfirebaseref.orderByChild("expensesName").equalTo("oil").addValueEventListener
,它将进入For循环,如果我再次添加orderByChild
和equalTo
,它将不会进入for循环
答案 0 :(得分:0)
更改
listfirebaseref.orderByChild("expenseName").equalTo("oil")
到
listfirebaseref.orderByChild("expensesName").equalTo("oil")