【问题标题】:Nested Lists in Firebase [duplicate]Firebase中的嵌套列表[重复]
【发布时间】:2016-04-07 11:56:45
【问题描述】:

试图了解如何在 Firebase 中实现嵌套列表。

问题可简化为:1 对 N 消息传递系统,其中,对于每条消息,您希望维护已接收并阅读该消息的用户列表。

已阅读"Best Practices for Arrays in Firebase"。尽量避免使用数组,因为我有同时写入,在这里它们似乎不是一个好的选择。

目前正在尝试通过在每条消息下存储子树来实现这一点,每个子树是已接收、阅读或以其他方式对消息执行某些操作的用户列表X

"msgid0" : {
        "authorID": "uid0",
        "msg"     : "message text",
        "ReceivedBy": {
           uid1 : true,
           uid2 : true
         }
        "ReadBy" :    {
           uid1 : true
        }
}

问题:是否可以将这样的嵌套数据结构直接放入单个对象中?

我正在粗略地尝试以下测试用例:

public class Message {
  private Long authorID;
  private String msg;
  private List<String> receivedBy;
  private List<String> readBy;
}

ref.addValueEventListener(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot dataSnapshot) {
    for(DataSnapshot i: dataSnapshot.getChildren()){
      Message_FB msg = i.getValue(Message_FB.class);
    }
  }
}

但它失败了:

引起:com.fasterxml.jackson.databind.JsonMappingException: 可以 不在 START_OBJECT 中反序列化 java.util.ArrayList 的实例 令牌

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案1】:

    啊,只需要使用Map 而不是List

    就我而言:

    public class Message {
      private Long authorID;
      private String msg;
      private Map<String, Boolean> receivedBy;
      private Map<String, Boolean> readBy;
    }
    

    现在我了解了如何在 Firebase 中使用递归结构。像大多数事情一样猜,很容易——只要你知道怎么做。

    【讨论】:

      猜你喜欢
      • 2017-06-02
      • 1970-01-01
      • 2020-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-10
      相关资源
      最近更新 更多