2016-12-05 31 views
2

POJOをFirebaseに挿入しようとしています。しかし、フィールドのいくつかはFirebaseに解析されていないようですが、警告やエラーはありません。Firebaseデータの挿入問題。データが正しく挿入されていない

public class Group { 
    public String name; 
    public String admin; 
    public List<String> addedUsers; 
    public List<String> invitedUsers; 

    public Group(String name, String admin, ArrayList<String> addedUsers, ArrayList<String> invitedUsers) { 
     this.name = name; 
     this.admin = admin; 
     this.addedUsers = addedUsers; 
     this.invitedUsers = invitedUsers; 
    } 

    public Group() { 
     // Default constructor required because we have a non-default constructor as well. 
    } 
} 

私はそうすることによってFirebaseにアップロード:

DatabaseReference groupRef = ref.child("Groups"); 
ArrayList<String> addedUsers = new ArrayList<String>(); 
addedUsers.add("[email protected]"); 
addedUsers.add("[email protected]"); 
ArrayList<String> invitedUsers = new ArrayList<String>(); 
Group newGroup = new Group("GroupName", 
     "[email protected]", addedUsers, invitedUsers 
); 

groupRef.push().setValue(newGroup); 

を私はFirebaseでこのオブジェクトで終わる:

enter image description here

I

私はこのPOJOを持っています二次的な問題を抱えていますが、手動でFirebaseにデータを挿入しましたが、今はリストをJavaオブジェクトにマップすることができず、nullとしてマップされています。データを正常にダウンロードできます。

+0

理由 '説明するかもしれない、(http://stackoverflow.com/questions/15408416/how-to-handle-empty-arrays-in-firebase)Firebaseが存在しないように空のオブジェクトを扱います] invitedUsers'が表示されません。しかし、私は(あなたのクラスのメンバー全員にゲッターを持たせる必要がある)と信じています(http://stackoverflow.com/questions/18340202/how-does-firebases-setvalue-work-for-objects-in-java)。また、非静的メンバー変数を 'private'として宣言することをお勧めします。 – ljeabmreosn

答えて

0

Firebaseはキー値マッピングをサポートしています。リストはサポートされていません。それをマップタイプに変更し、電子メールアドレスをキーとして保持し、真または偽のブール値を割り当てます。

+0

マップタイプに変更しようとしましたが、アップロードされた値が同じでも動作しませんでした。また、データパスに許可されていないピリオドが含まれているため、ファイアベース内のキーとして電子メールアドレスを使用することはできません。 –

+0

電子メールの文字列はありませんか?それは違いない。 map =新しいハッシュマップ...そしてmap.put(email、true)。電子メールが異なる場合、それは無効になりません – uguboz

+0

ですが、電子メールには@とが含まれています。 firebaseのキーには無効な文字ですが、ハッシュマップはそれを簡単に受け入れますがfirebaseにアップロードされません –

2

私はそれが基本的な書き込み操作のためにthey are supported.

基本的な書き込み操作

ようだとして、あなたがデータを保存するためのsetValue()を使用することができ、あなたはリストがサポートされていないことを意味するかわからないんだけど 指定された参照に、そのパスの既存のデータを置き換えます。次のように利用できるJSONタイプに対応

パスの種類

:ブール
  • ダブル
    • 文字列
    • ロング
    • Map<String, Object>
    • あなたは に、このメソッドを使用することができますList<Object>
    • カスタムJavaオブジェクトを定義するクラスに、デフォルトの コンストラクターが引数を持たず、 プロパティを割り当てるためのパブリックゲッターを持つ場合は、そのカスタムJavaオブジェクトを渡します。
  • +0

    私は訂正のためにこの点を見逃しました。しかし、リストには1つずつ到達することはできません。地図がもっと役に立つと思う – uguboz

    関連する問題