如何使用密钥从firebase检索数据?

时间:2016-11-28 11:51:50

标签: android firebase

"sicknessEntries" : [ null, {
    "daysSick" : 1,
    "sickness" : "Flu",
    "type" : "Viral",
    "userId" : "K9lPzGCb1AUdNqNywurwNueunv42"
}, 
-K9lP-zGCb1AUdNqNywurwN {
    "daysSick" : 2,
    "sickness" : "Pneumonia",
    "type" : "Bacterial",
    "userId" : "abcd"
}, 
-NywurwNueunv42 {
    "daysSick" : 1,
    "severity" : "Medium",
    "sickness" : "Shingles",
    "type" : "Viral",
    "userId" : "user123"
}, 
{
    "daysSick" : 1,
    "severity" : "Medium",
    "sickness" : "Flu",
    "type" : "Viral",
    "userId" : "K9lPzGCb1AUdNqNywurwNueunv42"
} ]

对于上面的json,它显示了不同类型的孩子我只需要检索关键“疾病”的值,无论是直接孩子还是子孩子?

ref.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot friendSnapshot: dataSnapshot.getChildren()) {
            System.out.println(friendSnapshot.child("sickness").getValue());
        }
    }
    public void onCancelled(DatabaseError databaseError) {

    }
});

如果我使用上面的代码,它只能获得关键“疾病”的主要子值(即它返回Flu,Flu只返回其他代码)。但我必须获得具有相同键的所有子子值。如何检索?

1 个答案:

答案 0 :(得分:1)

final FirebaseDatabase database = FirebaseDatabase.getInstance();
            DatabaseReference refUsers = database.getReference("/childname");
            refUsers.addChildEventListener(new ChildEventListener() {
                @Override
                public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                }

                @Override
                public void onChildChanged(DataSnapshot dataSnapshot, String s) {
                    try {
                        Iterable<DataSnapshot> children = dataSnapshot.child("sicknessEntries").getChildren();
                        List<SickModel> sickList = new ArrayList<>();
                        for (DataSnapshot child : children) {
                            SickModel sickmodel = child.getValue(SickModel.class);
                            sickList.add(sickmodel);
                        }

尝试上面的代码片段,以检索病态模型的数组。 病态模特有daysSick,sickness,type,userId