【问题标题】:Firebase - Retrieve all data from child where key contains VARFirebase - 从键包含 VAR 的子项中检索所有数据
【发布时间】:2017-07-23 18:18:39
【问题描述】:

使用 Android 和 FireBase,偶然发现了一个问题,我们想要实现的目标

我们有一个文档,其中的键是 2 个名字,比如 Bob_Jimmy

每个名称都是唯一的,但可以出现在不同的设置中,例如: Bob_Jimmy 吉米_鲍勃 鲍勃卡尔

既然这是密钥,那么您应该/将如何从“Bob”作为密钥一部分的所有密钥中获取数据?因为我们只认识鲍勃

【问题讨论】:

    标签: java android firebase firebase-realtime-database nosql


    【解决方案1】:

    创建 Firebase 数据库引用并在 onDataChange() 方法中检查键是否包含您的变量。例如:

    DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
    ref.addListenerForSingleValueEvent(new ValueEventListener(){
    
      @Override
      public void onDataChange(DataSnapshot dataSnapshot){
         if(dataSnapshot.getKey().contains("bob")){
                 {your code}
           }
      }
    
     });
    

    如果我有你的数据库结构,我可能能够编写准确的代码。这只是一个示例。 如果你想听新的孩子添加事件,你可以使用 addChildEventListener() 。希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      您可以使用实时数据库查询类来检索按键、值或子值排序的数据。您还可以将排序结果过滤为特定数量的结果或一系列键或值

      注意:过滤和排序可能会很昂贵,尤其是在 客户端。如果您的应用使用查询,请将 .indexOn 规则定义为 在服务器上索引这些键并提高查询性能 索引您的数据中描述。

      您可以使用以下方法sort data

      方法使用

      orderByChild() 按指定子键的值对结果进行排序。

      orderByKey() 按子键排序结果。

      orderByValue() 按子值排序结果

      startAt() 根据选择的排序方法返回大于或等于指定键或值的项目。

      endAt() 根据选择的排序方法返回小于或等于指定键或值的项目。

      equalTo() 根据选择的排序方法返回等于指定键或值的项目。

      【讨论】:

      • Firebase 文档中提供的所有信息。给出与所提问题相关的具体答案。无需在此处复制 - 粘贴文档。
      猜你喜欢
      • 2018-10-08
      • 2019-04-08
      • 1970-01-01
      • 2017-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      相关资源
      最近更新 更多