【问题标题】:fetch data from firebase having a randomly generated key从具有随机生成的密钥的 firebase 获取数据
【发布时间】:2020-04-18 22:54:52
【问题描述】:

下面是我用来将值保存到 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 UI 中搜索名称时,我想获取性别。

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案1】:

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

    【讨论】:

    • 虽然这可以回答问题,但代码块本身通常不是有用的答案。建议解释您所展示的解决方案的作用,以及该代码为何/如何回答问题。
    • @HasanBouTaam ,我没看懂这段代码,它会从数据库中获取所有数据吗?我想获取应用程序 UI 上提到的特定名称的性别。
    • @DeepChhowala 您的问题是关于获取随机键的数据,而不是关于特定名称。
    • @HasanBouTaam,不,我的问题有点不同,请查看我上面问题的最后一行。我在你的代码中尝试了一个 if 循环,它帮助了我,不确定这是否是一个永久的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2017-02-10
    • 2019-08-30
    • 2015-09-27
    • 2021-12-30
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多