如何在没有数据对象模型的情况下比较android中的firebase内部子项?

时间:2017-08-29 05:53:51

标签: java android firebase firebase-realtime-database

enter image description here

我正在尝试通过从应用程序中获取文本来验证管理员。我已经尝试使用数据对象模型并存储细节,但这不是必需的。我已经在没有循环的其他类中尝试了这个代码,它运行正常。

databaseReference = FirebaseDatabase.getInstance().getReference("Preschools");
                        databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
                            @Override
                            public void onDataChange(DataSnapshot dataSnapshot) {
                                    for(DataSnapshot preschool : dataSnapshot.getChildren())
                                    {
                                        for(DataSnapshot admin : preschool.getChildren())
                                        {
                                                String f_em = (String) admin.child("Admin").child("Email").getValue();
                                                String f_pa = (String) admin.child("Admin").child("Password").getValue();
                                                if(emailAddress.getText().toString().equals(f_em) && password.getText().toString().equals(f_pa))
                                                {
                                                    flag = true;
                                                }
                                        }
                                    }
                                }
                            @Override
                            public void onCancelled(DatabaseError databaseError) {
                                Toast.makeText(_2_Login.this, "Unable to reach firebase", Toast.LENGTH_SHORT).show();
                            }
                        });

Logacat:Image Here

在if条件中返回False。我无法弄清楚逻辑中的错误。

1 个答案:

答案 0 :(得分:0)

错误:如果凭据相同则不中断。 以下是正确的代码:

                            databaseReference = FirebaseDatabase.getInstance().getReference("Preschools");
                        databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
                            @Override
                            public void onDataChange(DataSnapshot dataSnapshot) {
                                    for(DataSnapshot preschool : dataSnapshot.getChildren())
                                    {
                                        if(emailAddress.getText().toString().equals(preschool.child("Admin").child("Email").getValue()) &&
                                                password.getText().toString().equals(preschool.child("Admin").child("Password").getValue()))
                                               {flag=true; break;}
                                    }