如何从具有多个条件的firebase数据库中选择数据[重复]

Posted

技术标签:

【中文标题】如何从具有多个条件的firebase数据库中选择数据[重复]【英文标题】:how to select data from firebase database with multiple conditions [duplicate] 【发布时间】:2019-12-30 13:34:09 【问题描述】:

这是我的数据库:

我正在尝试从 firebase 数据库中检索我的数据。 我的执行如下: select * from logindb where loginname='pandi' and 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);
            
        );

没有收到任何数据。

此处未显示错误。

【问题讨论】:

请提供数据库结构截图。 你能说出你的search的价值吗? 登录名是我的搜索值 android应用开发,工具为android studio 【参考方案1】:

根据您的问题,

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

以下查询可能适合您。

在 if 条件下的这个查询中,它将返回节点的键。

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);
    
);

【讨论】:

嘿伙计,我有这种类型的评论“您的数据将在客户端下载和过滤。考虑在登录名中添加 '".indexOn": "loginId"' 到您的安全和 Firebase 数据库规则为了更好的性能“ 这个question 会帮助你 兄弟,我也读过这个文件,但我不知道如何从数据库中检索数据。 这意味着您必须在实时数据库中添加新规则 like this

以上是关于如何从具有多个条件的firebase数据库中选择数据[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从同一个表mysql存储过程中选择具有不同条件的多个计数

如何使用 Swift 在 Firebase 中使用相同的关键字存储不同数据的多个实例?

如果不同的条件为真,Firebase 如何打破具有不同状态/消息的实时数据库事务?

在 Access 2013 中具有多个条件的 DoCmd.SearchForRecord

具有多个条件的数据表选择

如何在firebase中查询日期为datenow的选择条件?