Как сделать запрос в firebase? - PullRequest
1 голос
/ 24 июня 2019

У меня проблема с запросом моих данных в Firebase. Я пытаюсь сделать запрос по предмету, который равен науке. Моя ссылка - классы, а потом мой ребенок - это ключ / идентификатор, и после этого у меня есть ребенок после этого, который называется информация о пользователе. Вот моя структура базы данных:

"Classes" : {
"-Li9nBUgnFmCWqUmwV5W" : {
  "class_info" : {
    "date_clasname" : "August 6, 2019",
    "room_number" : "131",
    "subject" : "Science",
    "teacher" : "Ms.Henry",
    "id" : "-Li9nBUgnFmCWqUmwV5W"
  }
},
"-Li9n_IYwbTNPdNAsTAu" : {
  "class_info" : {
    "date_clasname" : "August 6, 2019",
    "room_number" : "131",
    "subject" : "Math",
    "teacher" : "Ms.Henry",
    "id" : "-Li9n_IYwbTNPdNAsTAu"
  }
},
"-Li9naUipsa865NBpZjW" : {
  "class_info" : {
    "date_clasname" : "August 6, 2019",
    "room_number" : "131",
    "subject" : "Other",
    "teacher" : "Ms.Henry",
    "id" : "-Li9naUipsa865NBpZjW"
  }
},
"-Li9nbpwp2qchwmZRDP9" : {
  "class_info" : {
    "date_clasname" : "August 6, 2019",
    "room_number" : "131",
    "subject" : "Technology",
    "teacher" : "Ms.Henry",
    "id" : "-Li9nbpwp2qchwmZRDP9"
  }
},
"-Li9ne0NDyjcB4SIWi1z" : {
  "class_info" : {
    "date_clasname" : "August 6, 2019",
    "room_number" : "131",
    "subject" : "Social Studies",
    "teacher" : "Ms.Henry",
    "id" : "-Li9ne0NDyjcB4SIWi1z"
  }
}
 },

Вот мой код для действия, которое выполняет запрос:

public class Science_classes extends AppCompatActivity {



private FirebaseDatabase database;
 private  DatabaseReference myRef;
 private List<Listdata> list;
 private RecyclerView recyclerview;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_science_classes);
    recyclerview = (RecyclerView) findViewById(R.id.rview);
    database = FirebaseDatabase.getInstance();
    myRef = database.getReference("Classes");


    Query query = myRef.orderByChild("subject").equalTo("Science");
    System.out.println(query);
    query.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            list = new ArrayList<>();
            // StringBuffer stringbuffer = new StringBuffer();
            for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
                Class_model new_class = dataSnapshot1.getValue(Class_model.class);
                String nameofclass = new_class.getDate_clasname();
                String teacherofclass = new_class.getTeacher();
                String roomnumberofclass = new_class.getRoom_number();
                String class_key = new_class.getUid();
                Listdata listdata = new Listdata(nameofclass, teacherofclass, roomnumberofclass, class_key);
                //String name = userdetails.getName();
                //String email = userdetails.getEmail();
                //String address = userdetails.getAddress();
                listdata.setDate_class(nameofclass);
                listdata.setTeacher(teacherofclass);
                listdata.setRnumber(roomnumberofclass);
                list.add(listdata);
                // Toast.makeText(MainActivity.this,""+name,Toast.LENGTH_LONG).show();

            }

            RecyclerviewAdapter2 recycler = new RecyclerviewAdapter2(list);
            RecyclerView.LayoutManager layoutmanager = new LinearLayoutManager(Science_classes.this);
            recyclerview.setLayoutManager(layoutmanager);
            recyclerview.setItemAnimator(new DefaultItemAnimator());
            recyclerview.setAdapter(recycler);

        }

        @Override
        public void onCancelled(DatabaseError error) {
            AlertDialog alertDialog = new AlertDialog.Builder(Science_classes.this).create();
            alertDialog.setTitle("Error");
            alertDialog.setMessage("Check your connection! If, problem persists please email svhsdev@vigoschools.org!");
            alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                        }
                    });
            alertDialog.show();
            // Failed to read value
            //  Log.w(TAG, "Failed to read value.", error.toException());
        }
    });

}
//});

Заранее спасибо ... дайте мне знать, если у вас есть какие-либо вопросы!

1 Ответ

1 голос
/ 25 июня 2019

Чтобы иметь возможность запрашивать все классы, в которых тема равна science, измените следующий запрос:

Query query = myRef.orderByChild("subject").equalTo("Science");

до

Query query = myRef.orderByChild("class_info\subject").equalTo("Science");

Видишь, ты скучаешь по ребенку, class_info. При указании ссылки обязательно существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...