【问题标题】:How to do a query with that structure in Firebase + Kotlin如何在 Firebase + Kotlin 中使用该结构进行查询
【发布时间】:2020-11-04 05:00:51
【问题描述】:

我一直使用 SQL 数据库,现在想了解 Firebase 数据库。

采用这种结构:

用户 -> RandomID -> 电子邮件、姓名、密码

选择名为“Peter”的用户的最佳方法是什么?

我在教程中看到使用随机 id 来创建孩子,这就是我使用它的原因。

databaseReference.child("User").addValueEventListener(object : ValueEventListener{}

我可以读取所有用户(我可以在代码中过滤)但我想做一个正确的监听器,但问题是我不知道“ID”(因为它是随机的),人们为什么要使用它?

【问题讨论】:

    标签: android firebase android-studio kotlin firebase-realtime-database


    【解决方案1】:

    您可以在 Firebase 实时数据库中使用 orderByChildequalTo

    databaseReference.child("User").orderByChild("name").equalTo("Peter").addValueEventListener(object : ValueEventListener{}
    

    唯一的问题是 Firebase 实时数据库不允许撰写查询,如果您想按名称过滤,比如说电子邮件,您应该使用具有更多查询功能的新 Firestore 数据库

    请查看此来源以了解如何使用实时数据库进行查询

    https://firebase.google.com/docs/database/admin/retrieve-data?hl=en#ordering-by-value

    【讨论】:

    • 有效!!但是..真的,我不明白为什么我不需要randomID ...在我的逻辑中它应该是... databaseReference.child("User").child(RANDOMID*).orderByChild( "name").equalTo("Peter").addValueEventListener(object : ValueEventListener{}
    • 它映射您的用户子下方与子名“name”匹配的键,然后它只返回 equalTo("peter") 的键,然后在您的 addValueEventListener 中,您可以使用 getKey()获取包含这些 Peter 值的 randomID
    • 如果你只是想在自己的节点内部过滤,不需要查询,你可以访问该节点一次并获取name的值
    猜你喜欢
    • 2020-12-31
    • 2020-03-15
    • 1970-01-01
    • 2017-12-21
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    • 2022-08-21
    • 1970-01-01
    相关资源
    最近更新 更多