【问题标题】:Find all match in firebase real time database在firebase实时数据库中查找所有匹配项
【发布时间】:2017-07-19 13:42:17
【问题描述】:

您好,我需要使用一个参数在 firebase 中的所有外观中搜索数据库并将其写入显示或保存在对象中。 (如果保存在对象中,我可以处理它)

我的数据库正在查找

我需要得到所有匹配 mDatabaseReference.child("horse").child(kon.getUid()).child("plemeno") 和 "Hnedy"

并保存在某处。或处理写在显示和搜索秒。

不知道为什么……

谢谢。

如果我需要遍历所有数据库进行搜索,或者它就在这里。

请给我所有我选择的最适合我的建议。

如果您需要更多信息,请写信,但我不知道您需要什么。

..我不知道该说什么

/////////////////////////////////////// /

首先我用这个代码在显示上写下所有数据库..

private void addEventFirebaseListener() {
    //Progressing
    circular_progress.setVisibility(View.VISIBLE);
    list_data.setVisibility(View.INVISIBLE);

    mDatabaseReference.child("horse").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if(list_kone.size() > 0)
                list_kone.clear();
            for(DataSnapshot postSnapshot:dataSnapshot.getChildren()){
                Kon kon = postSnapshot.getValue(Kon.class);
                list_kone.add(kon);
            }
            ListViewAdapter adapter = new ListViewAdapter(All.this,list_kone);
            list_data.setAdapter(adapter);

            circular_progress.setVisibility(View.INVISIBLE);
            list_data.setVisibility(View.VISIBLE);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

但我认为这对搜索并不重要

【问题讨论】:

  • 您在问题中包含了 JSON 树的图片。请将其替换为作为文本的实际 JSON,您可以通过单击 Firebase 数据库控制台中的导出 JSON 链接轻松获取该文本。将 JSON 作为文本使其可搜索,让我们可以轻松地使用它来测试您的实际数据并在我们的答案中使用它,一般来说这只是一件好事。

标签: android search firebase firebase-realtime-database


【解决方案1】:

试试这个:

mDatabaseReference.child("horse").orderByChild("plemeno").equalTo("Hnedy").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) { 
            // retrieve the data into an object: kon here
            for(DataSnapshot postSnapshot : dataSnapshot.getChildren()){
                Kon kon = postSnapshot.getValue(Kon.class);
                if (cenaFilter && kon.getCena().equals("100")) {
                   // RETRIEVE DATA
                }
            }
        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {

        }
    });

这里cenaFilter是一个布尔值,如果用户选择了这个特定的过滤器,则等于true,否则为false

【讨论】:

  • 从哪个变量获得所有其他信息?用于打印输出。数据快照?
  • 像往常一样:for(DataSnapshot postSnapshot:dataSnapshot.getChildren()){ ... }
  • 谢谢它的工作......但如果我想搜索更多的标准,例如plemeno:hnedy和cena:100?
  • 好的,那么您可以接受答案 :) 据我所知,使用 firebase 您不能对数据进行两次排序/过滤。您可以在 for 循环中执行此操作,如下所示:for(DataSnapshot postSnapshot:dataSnapshot.getChildren()){ if (yourObj.getCena().equals("100")) {...} }
  • 请更新您的答案或编辑以按 2 个条件搜索
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-31
  • 2021-09-30
  • 1970-01-01
  • 1970-01-01
  • 2021-10-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多