如何从多个条件的Firebase数据库中选择数据

时间:2019-08-26 10:56:30

标签: android firebase firebase-realtime-database

这是我的数据库:

enter image description here

我正在尝试从Firebase数据库检索我的数据。 我的执行像: 从logindb中选择*,其中loginname ='pandi'和loginpass ='1234'。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my__value);

        mlist = (ListView) findViewById(R.id.mylist);

        Intent intent = getIntent();
        databaseReference = FirebaseDatabase.getInstance().getReference("logindb");

        String search = intent.getStringExtra("mval");

        databaseReference = FirebaseDatabase.getInstance().getReference();

        Query query = databaseReference.child("loginname").orderByChild("loginId").equalTo(search);
        query.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                if (dataSnapshot.exists()) {
                    // dataSnapshot is the "issue" node with all children with id 0
                    for (DataSnapshot issue : dataSnapshot.getChildren()) {
                        String address=issue.child("address").getValue().toString();
                        Toast.makeText(getApplicationContext(), address, Toast.LENGTH_SHORT).show();
                    }

                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                Log.d(TAG, "onCancelled: "+databaseError);
            }
        });

没有收到任何数据。

这里没有显示错误。

1 个答案:

答案 0 :(得分:2)

根据您的问题,

据我所知,您想搜索用户名是pandi和密码1234。

以下查询可能会为您正常工作。

在此查询中,如果条件为条件,它将返回节点的键。

Query query = databaseReference.orderByChild("loginname").equalTo(search);
query.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if (dataSnapshot.exists()) {
            for (DataSnapshot issue : dataSnapshot.getChildren()) {
                LoginPojo pojo = dataSnapshot.getValue(LoginPojo.class);
                if(pojo.getLoginpasssword().equals("1234")){
                    Log.e("Key", issue.getKey());
                }
            }

        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        Log.d(TAG, "onCancelled: "+databaseError);
    }
});