java - 从具有随机生成 key 的 firebase 获取数据

标签 java android firebase firebase-realtime-database

下面是我用来将值保存到 firebase 中的代码。它为每个值生成一个随 secret 钥。 (我想保存多余的数据,所以这个方法是必要的)。

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 用户界面搜索姓名时,我想获取性别。

最佳答案

这是 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);

关于java - 从具有随机生成 key 的 firebase 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61289378/

相关文章:

android - Firebase 搜索事件术语未显示在分析中

java - Java 应用程序的 Firebase 用户身份验证(非 Android)

java - Java可以将方法存储在数组中吗?

android - PagerAdapter 没有记录的 getPageWidth() 方法

java - 有没有办法禁用 "keyboard-dismiss"按钮?

reactjs - 如何在React中显示API错误句柄?

具有默认内部类的 Java 接口(interface)

java - 如何与我的适配器类中的 fragment 进行通信

android - 如何通过环境变量添加记录?

java - Firebase 到 ImageView - 为什么即使没有图像,我的聊天也会显示图像?