【问题标题】:Get specific child with same parent as another child Firebase获取与另一个孩子 Firebase 具有相同父母的特定孩子
【发布时间】:2020-11-14 11:01:27
【问题描述】:

我正在 Android Studio 中制作一个 Android 应用,我想从 Firebase 获取特定数据。我正在尝试搜索Firebase Realtime Database 以获取所有具有usercode1234 的用户,然后获取他们的名字。这就是我在 Firebase 中的设置方式:

Firebase Setup image link

由于我正在搜索 usercode = 1234 的数据,它将返回(在数据快照中)关于 Joe 和 Lily 的所有信息(因为他们是两个用户,用户代码为 1234),但它不应该t 返回有关 Kevin 的信息。我是这样做的:

Query getUsers = ref.orderByChild("usercode").equalTo(1234);
    getUsers.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if(dataSnapshot.exists()){
                //User with usercode = 1234 exists
            } else {
                //User with that Usercode doesn't exist
            }
        }
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}

datasnapshot,如果转换为字符串,我相信会包含 Lily 和 Joe 的所有信息。 我想要做的是从datasnaphot 获取第一个用户的name(在这种情况下是乔)。然后,我的代码将通过一些测试使用它,然后转到第二个用户的name(即 Lily)并重复测试。此外,如果有 100 个用户,那么我需要为这 100 个用户代码为 1234 的每个用户重复它,所以我可能需要一些可重复的东西。

所以不知何故,我需要从所有具有usercode1234 的用户中找到孩子的name 的第一个值,然后重复直到我得到所有名称并在所有用户上运行测试他们。

我是 Stackoverflow 的新手,如果我遗漏了任何有助于回答问题的信息,请告诉我。

---- 编辑----

我现在已经知道如何使用 Firebase Firestore 做到这一点。它具有更简单的查询,并允许您对结果进行更多操作。如果其他人遇到我上面提到的相同问题,您可能想尝试 Firebase Firestore。

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案1】:

    当使用以下代码行时:

    Query getUsers = ref.orderByChild("usercode").equalTo("1234");
    

    您正在搜索Users 节点,所有将usercode 属性设置为"1234" 的用户。此查询将始终返回 no 结果,因为您正在搜索 1234 作为字符串而不是数字,因为它存储在数据库中。正确的查询应该是:

    Query getUsers = ref.orderByChild("usercode").equalTo(1234); //No double quotes
    

    【讨论】:

    • 我的问题是,一旦我从数据库中获取了这些信息,我该如何使用它?这就是我在问题的后半部分试图弄清楚的,我如何使用检索到的信息并获得第一个结果,然后是第二个结果,依此类推。不过,谢谢您的回答,我一定会在我的代码中解决这个问题。
    • 任何需要从数据库中获取数据的代码,都需要在 onComplete 方法中,或者从那里调用。因此,这是您可以使用它或从 post 中查看我的答案的唯一方法。此外,为了能够获得第一个、第二个等等,您绝对应该遍历DataSnapshot 对象。
    • 如果您仍然认为我的回答对您有所帮助,请考虑通过单击左侧投票箭头下方的复选标记(✔️)来接受它。应将颜色更改为绿色。我真的很感激。谢谢!
    猜你喜欢
    • 2015-08-30
    • 2018-01-29
    • 1970-01-01
    • 2018-01-31
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 2013-06-23
    相关资源
    最近更新 更多