java - Firebase - (具有多个子节点用户唯一键的 DataSnapshot ) - 空对象引用

标签 java android firebase

我有与每个患者唯一 key 相对应的药品数量。我在检索患者的所有医学数据时遇到麻烦 这是我的数据库结构。

  {
      "Medicine" : {
        "-LnRyr-3szcVYVtr_d4m" : {
          "Med1" : {
            "dosage" : "1+1+1",
            "medname" : "Panadol",
            "time" : "After Every Meal"
          },
          "Med2" : {
            "Mmedname" : "Raisik",
            "med2dosage" : "1+1+1",
            "med2time" : "after every meal 1 week"
          }
        }
      }
    }

代码

 databaseReference = FirebaseDatabase.getInstance().getReference("Medidine");
        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot requestSnapshot: dataSnapshot.getChildren()) {
                    DataSnapshot ds = requestSnapshot.child("Med1");
                    for (DataSnapshot medicinesnapshot: ds.getChildren()) {
                        String MedicineName = medicinesnapshot.child("medname").getValue(String.class);
                        String MedDosage = medicinesnapshot.child("dosage").getValue(String.class);
                        String medtime = medicinesnapshot.child("time").getValue(String.class);
                        marray.add(MedicineName+MedDosage+medtime);
                    }

                    }
            }

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

            }
        });

最佳答案

对于患者 ID=-LnRyr-3szcVYVtr_d4m 的患者;

然后你就可以像这样获得与该患者相关的所有药物

String patientId="-LnRyr-3szcVYVtr_d4m";

FirebaseDatabase.getInstance().getReference().child("Medicine").child(patientId).addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                if (dataSnapshot.exists()) {

                    for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                        MedicineData medicineData = snapshot.getValue(MedicineData.class);



                    }


                }
            }

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

            }
        });

关于java - Firebase - (具有多个子节点用户唯一键的 DataSnapshot ) - 空对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57710838/

相关文章:

java - 如何在 Maven 中为 war 文件生成校验和

javascript - iframe 无法通过亚马逊火正确清除

javascript - Android 键盘 - 在 cordova 应用程序中无法访问

android - Cordova Firebase 插件通知 - 无法添加任务 ':processDebugGoogleServices',因为该名称的任务已存在

firebase - 如何在 firebase 中创建没有电子邮件的用户?

node.js - Firebase云函数无法读取未定义的属性 'displayName'

java - 如何将颜色发送到 ArrayList?

java - 使用 System.arrayCopy 复制原始类型的数组,是浅的还是深的?

java - 我在 Netbeans 中的 java 项目变得很慢

android - Android中的 "-journal"SQLite数据库是什么?