2016-04-07 13 views
2

Firebaseでネストされたリストを実装する方法を理解しようとしています。Firebaseのネストされたリスト

1対Nのメッセージングシステムでは、各メッセージについて、そのメッセージを受信して​​読み取ったユーザーのリストを維持することができます。

"Best Practices for Arrays in Firebase"をお読みください。私は同時書き込みがあるので、配列を避けようとしていますが、ここではうまくいかないようです。 Y

"msgid0" : { 
     "authorID": "uid0", 
     "msg"  : "message text", 
     "ReceivedBy": { 
      uid1 : true, 
      uid2 : true 
     } 
     "ReadBy" : { 
      uid1 : true 
     } 
} 
を現在読んで、各サブツリーは、受信したユーザーのリストされ、各メッセージの下のサブツリーのを格納することによって、これを達成しようとしている、またはその他のメッセージ に何らかのアクションXを行っ

質問:このようなネストされたデータ構造を直接1つのオブジェクトに入れることは可能ですか?

私はぞんざい以下でテストケースをしようとしています:

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: デシリアライズすることはできませんjava.util.ArrayListのインスタンスSTART_OBJECTのうち トークン

答えて

3

ああ、ちょうどを使用する必要がありますListの代わりにを入力します。私の場合は

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

今、私はFirebaseで再帰的な構造を使用する方法を理解します。ほとんどのもののように思える、それは簡単です - 一度あなたはどのように知っています。

関連する問題