2017-11-12 6 views
0

Firebaseを使用するのが非常に新しいと言って始めましょう。私はプッシュを使用して、私のFirebaseデータベースに「mGameSessionID」と呼ばれる文字列()でカスタムオブジェクトをプッシュしようとしていますAndroid/Java Firebaseがキー/参照に予期しない値を追加する

:「.setValue(gameSession)」を使用して値を設定するときしかし、

DatabaseReference pushedPostRef = 
myRef.child(myRef.push().getKey()); 

String gameSessionID = pushedPostRef.getKey(); 

GameSession gameSession = new GameSession(gameSessionID); 

pushedPostRef.setValue(gameSession); 

は、それが追加されますデータベースここ

Example picture of what the firebase looks like

に余分gameSessionID値はGameSessionクラスです:

String mGameSessionID; 

GameSession() 
{ 

} 

GameSession(String gameSessionID) 
{ 
    mGameSessionID = gameSessionID; 
} 

public String getGameSessionID() 
{ 
    return mGameSessionID; 
} 

public void setGameSessionID(String gameSessionID) 
{ 
    mGameSessionID = gameSessionID; 
} 

答えて

1

Firebase Realtime Database SDKは、リフレクションを使用して、オブジェクトのインスタンス上のすべての可視フィールドとJavaBeanタイプゲッターメソッドを発見してシリアル化します。したがって、フィールド "foo"を見ると、 "foo"というプロパティを直列化します。 「getFoo」というゲッターメソッドがある場合は、「foo」というプロパティもシリアル化します。

private String mGameSessionID 

これはmGameSessionIdを見てからSDKを防止しなければならない、とだけではなく:

あなたGameSessionのようなJavaBeanのタイプのオブジェクトの場合

、アクセサ(ゲッターとセッター)を持つフィールドは、privateである必要がありますが、アクセスでのみそれらの通過を許可しますそのために可視のゲッターメソッドを使用します。

+0

ああ、わかりました、明確化のためにありがとうございます。時には私は私が何かを私的または公的に宣言していないことを忘れています! – Darkstorm51

関連する問題