2017-10-15 39 views
1

我正在開發一款Android應用程序,其中年長的孩子可以撿起年幼的孩子並步行上學。使用該應用程序,經過身份驗證的(電子郵件和密碼)小孩可以在三個地址之間進行選擇以獲取。我有一個用戶節點和一個地址節點。Android - Firebase替換數據

問題是,每次用戶選擇一個地址時,用戶名子級都將被覆蓋。因此每個地址只有一個用戶名。
我的數據庫結構如下:

a

database.child("Addresses").child(m1.getStreet()).child("username").setValue(name); 
database.child("Addresses").child(m2.getStreet()).child("time").setValue(time); 
database.child("Addresses").child(m3.getStreet()).child("address").setValue(address); 

我想過使用的推送功能,但我不認爲它在這方面可以使用。有任何想法嗎?

+0

當用戶拿起和地址你在哪裏保存它 –

+0

在地址節點 – JDoe

回答

1

setValue()將覆蓋現有地圖中的所有內容。如果要添加/更新值並保留舊數據,請使用updateChildren()

+0

沒有方法叫updateValues() - JDoe 22分鐘前 – JDoe

+0

@JDoe對不起,我認爲Swift和Android有相同的方法名稱。看到弗蘭克做的編輯,它應該做你想做的。 –

+0

這不起作用 – JDoe

0

如果您有唯一的用戶名,或者您可以在用戶拿到鑰匙,就可以直接使用,作爲一個關鍵:

database.child("Addresses").child(m1.getStreet()).child("users").child(name).child("username").setValue(name); 
database.child("Addresses").child(m2.getStreet()).child("users").child(name).child("time").setValue(time); 
database.child("Addresses").child(m3.getStreet()).child("users").child(name).child("address").setValue(address);