попробуйте получить данные из Firebase, которые под двумя уникальными ключами генерируются методом UID и push () и с помощью запроса - PullRequest
0 голосов
/ 13 октября 2019

Я использовал запрос, который получает определенную дату от пользователя, чтобы получить данные из базы данных, но он постоянно говорит, что данные отмечаются как существующие, даже если я использовал двухконтурную одну над Uid и одну над кнопкой. вот код, который я пишу.

final DatePickerDialog datePickerDialog = new DatePickerDialog(AdminAppointmentManage.this, new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
        month += 1;
        selectedDate = dayOfMonth + "/" + month + "/" + year;
        dateText.setText(selectedDate);
        Query query = FirebaseDatabase.getInstance().getReference().child("Appointment").orderByChild("dateOfAppointment").equalTo(selectedDate);
        query.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                appointmentList.clear();
                List<String> appointmentKey = new ArrayList<>();
                if (dataSnapshot.exists()) {
                    for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                        for (DataSnapshot appointmentSnapshot : snapshot.getChildren()){
                            appointmentKey.add(appointmentSnapshot.getKey());
                            Appointments appointments = appointmentSnapshot.getValue(Appointments.class);
                            appointmentList.add(appointments);
                    }}
                    adapter.notifyDataSetChanged();
                } else {
                    Toast.makeText(AdminAppointmentManage.this, "No Appointment for that day !!", Toast.LENGTH_SHORT).show();
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
    }
}, year, month, day);

дерево базы данных:

enter image description here

1 Ответ

0 голосов
/ 13 октября 2019

Запросы Firebase работают с простым списком дочерних узлов. Они могут упорядочивать / фильтровать по одному свойству под каждым дочерним узлом.

Таким образом, вы child("Appointment").orderByChild("dateOfAppointment").equalTo(selectedDate) берете каждый пользовательский узел (прямые дочерние узлы Appointment и порядки / фильтры затем включаютсяdateOfAppointment. А поскольку у пользователей нет свойства dateOfAppointment, это приводит к пустому списку.

В вашей текущей структуре данных вы можете выполнять поиск по встречам одного пользователя, но вы можете '• выполнять поиск по встречам всех пользователей одновременно. Если вы хотите, чтобы последний имел возможность сохранить единый плоский список встреч (а затем добавить там идентификатор пользователя в качестве свойства).

См. также:

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