Android / Java Firebase为键/引用添加了意外值

时间:2017-11-12 22:33:41

标签: java android firebase firebase-realtime-database

首先我要说的是,我对使用Firebase非常陌生。

我正在尝试使用名为" mGameSessionID"的字符串来推送自定义对象。使用push():

到我的Firebase数据库
DatabaseReference pushedPostRef = 
myRef.child(myRef.push().getKey());

String gameSessionID = pushedPostRef.getKey();

GameSession gameSession = new GameSession(gameSessionID);

pushedPostRef.setValue(gameSession);

但是使用" .setValue(gameSession)"设置值时它为数据库添加了额外的gameSessionID值

Example picture of what the firebase looks like

这是GameSession类:

String mGameSessionID;

GameSession()
{

}

GameSession(String gameSessionID)
{
    mGameSessionID = gameSessionID;
}

public String getGameSessionID() 
{
    return mGameSessionID;
}

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

1 个答案:

答案 0 :(得分:1)

Firebase实时数据库SDK将使用反射序列化对象实例上的所有可见字段和JavaBean类型的getter方法以发现它们。因此,如果它看到一个字段" foo",它将序列化一个名为" foo"的属性。如果它看到名为" getFoo"的getter方法,它将序列化一个名为" foo"的属性。

对于像GameSession这样的JavaBean类型对象,带有访问者(getter和setter)的字段应该是私有的,只允许访问它们:

private String mGameSessionID

这可以防止SDK看到mGameSessionId,而只是使用可见的getter方法。