如何管理firebase数据库密钥?

时间:2017-01-17 12:27:08

标签: android firebase firebase-realtime-database

当使用firebase(或任何基于id聚合数据的数据库)时,我几乎总是要跟踪给定值的键。例如,假设我有带有纬度和经度字段的Location类。当我从firebase下载if时,除了它的两个字段之外,我还想跟踪密钥(使用push()生成的节点值,例如-K_esEYXNfMBNmgF3fO4)它是从以后下载的,所以我可能稍后更新它,删除它等等。我看到了只有两个解决方案:

  1. 复制数据并将键值添加为另一个Location类字段。这不能很好地工作,因为我必须在执行push()之后设置键值。

  2. 创建保存密钥和对象的通用包装类:

    public class Key<T> {
    
      private final String key;
      private final T value;
    
      public Key(String key, T value) {
          this.value = value;
          this.key = key;
      }
    
      public String key() {
          return key;
      }
    
      public T value() {
          return value;
      }
    }
    
  3. 我正在使用第二种方法,但它看起来不太好。我的所有代码库基本上都有这个Key类,当使用RxJava时,很多方法都有这样的返回类型:Observable<Key<Location>>,这看起来很荒谬。

2 个答案:

答案 0 :(得分:2)

你所谓的荒谬实际上看起来很正常。

或者,您可以在POJO中包含密钥,并使用@Exclude对其进行注释,以将其从序列化中排除。

答案 1 :(得分:0)

跟进@FrankvanPuffelen很棒的答案,用下面的按键做你想做的事

Read and Write Data on Android

{{1}}