从Firebase获取具有随机生成密钥的数据

时间:2020-04-18 12:49:22

标签: java android firebase firebase-realtime-database

下面是我用来将值保存到Firebase中的代码。它为每个值生成一个随机密钥。 (我想保存冗余数据,因此此方法是必需的。)

GenderOfNameHelperClass GONHC = new GenderOfNameHelperClass();
reference = FirebaseDatabase.getInstance().getReference().child("GenderOfName");
GONHC.setName(Name);
GONHC.setGender(Gender);
reference.push().setValue(GONHC);

这将创建如下结构:

db-ai-34201
-...GenderOfName
    -...M4oLyB1ADGLWGJG4EgR
        ...gender:"Female"
        ...name: "akira"

现在我该如何从中获取数据。 当我从Android用户界面中搜索姓名时,我想获取性别。

1 个答案:

答案 0 :(得分:2)

这是GenderOfName节点的侦听器,用于在随机键下提取数据:

ValueEventListener listener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
       for(DataSnapshot snapShot:dataSnapshot.getChildren() ){
       //these are the values of gender and name for every random key
       //in GenderOfName node

           String gender = snapShot.child("gender").getValue(String.class);
           String name = snapShot.child("name").getValue(String.class);              
       }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException(); // never ignore errors
    }
};

最后将侦听器附加到该节点的引用上,开始侦听

reference = FirebaseDatabase.getInstance().getReference().child("GenderOfName");
reference.addValueEventListener(listener);

更新

您始终可以使用查询来过滤结果:

代替此:

reference = FirebaseDatabase.getInstance().getReference().child("GenderOfName");
reference.addValueEventListener(listener);

尝试一下,它将根据您需要的名称为您提供特定的快照:

Query query = FirebaseDatabase.getInstance().getReference().child("GenderOfName").orderByChild("name").equalTo(theNameYouWant);
query.addValueEventListener(listener);
相关问题