我有一個應用程序,我正在建設。如何向Firebase中的用戶添加列表?
現在數據庫看起來像這樣。
我要添加到每個用戶(當他們第一次登錄)另一場名爲「朋友」,並在那裏舉行的列表。 我該怎麼辦?
我希望它是這樣的:
我有一個應用程序,我正在建設。如何向Firebase中的用戶添加列表?
現在數據庫看起來像這樣。
我要添加到每個用戶(當他們第一次登錄)另一場名爲「朋友」,並在那裏舉行的列表。 我該怎麼辦?
我希望它是這樣的:
假設「用戶」的第一個孩子是用戶ID。
您可以像這樣添加「朋友」的孩子。
FirebaseUser currentFirebaseUser = FirebaseAuth.getInstance().getCurrentUser();
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("users").child(currentFirebaseUser.getUid()).child("friends").setValue("your First Friend");
之後,你在這個孩子這樣的實現這些方法。
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// This method is called once with the initial value and again
// whenever data at this location is updated.
String value = dataSnapshot.getValue(String.class);
Log.d(TAG, "Value is: " + value);
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
Log.w(TAG, "Failed to read value.", error.toException());
}
});
的火力Here
閱讀文檔如果的getuid越來越trobule,嘗試看看,如果它不爲空,或者是在數據庫等。如果正確,則將其轉換爲私有字符串並放入DatabaseReference中。
String userKey = FirebaseAuth.getInstance().getCurrentUser().getUid();
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("users").child(userKey).child("friends").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String value = datasnapshot.getValue(String.class);
//verifiy if has something in the friendList and put value if has
if(value != null) {
myRef.setValue("My new FRRIIIEEEND);
}
};
@Override
public void onCancelled(DatabaseError databaseError) {
}
,我認爲它應該幫助你這段代碼
通常當我需要存儲一個名單,我使用List<>
從java.util
做到這一點。如果您使用名爲GenericTypeIndicator
的東西,則可以直接輸入要自動序列化到Firebase數據庫的自定義Java對象。
假設您的「朋友」列表是User
對象的集合。我會做這樣的事情:
DatabaseReference myRef = database.getReference("users").child(currentFirebaseUser.getUid()).child("friends");
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
GenericTypeIndicator<List<User>> genericTypeIndicator =new GenericTypeIndicator<List<User>>(){};
List<User> friends = dataSnapshot.getValue(genericTypeIndicator);
// Check if friends list exists
if(friends == null){
// Create list
friends = new ArrayList<User>();
}
// Add new user
friends.add(youUserHere);
// Set updated friends list
database.getReference("users").child(currentFirebaseUser.getUid()).child("friends").setValue(friends);
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
Log.w(TAG, "Failed to read value.", error.toException());
}
});
嗨,最後一行給我一個錯誤。它說無法解析符號getUid。如果我將它改爲getUid()它表示不兼容類型 必需:..... databeserefernce找到:.....任務。任務 – Daniel
對不起,它的getUid() –
檢查當前用戶是否爲空或沒有采取數據庫參考。以上代碼必須工作。 –