我有一个应用程序,我正在建设。如何向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() –
检查当前用户是否为空或没有采取数据库参考。以上代码必须工作。 –