如何在firebase中向用户添加列表?

时间:2017-09-04 12:42:18

标签: android firebase firebase-realtime-database

我有一个应用我正在建设。

现在数据库看起来像这样。

Right now the database looks like this.

我想添加给每个用户(当他们第一次登录时)另一个字段名称"朋友"并在那里保持一份清单。 我该怎么办?

我希望它是这样的:

enter image description here

3 个答案:

答案 0 :(得分:0)

假设"用户的第一个孩子"是userId。

您可以添加"朋友"孩子就这样。

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());
    }
});

阅读firebase Here

的文档

答案 1 :(得分:0)

如果getUid正在获取trobule,请尝试查看它是否为null或数据库中是否相等。如果是正确的,将其转换为私有字符串并放入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) {

                    }

我认为它应该可以帮助你这个代码

答案 2 :(得分:0)

通常当我需要存储列表时,我会使用List<>中的java.util来执行此操作。如果您使用名为 GenericTypeIndicator 的内容,则可以直接输入要自动序列化到Firebase数据库中的自定义Java对象。

让我们说你的朋友&#34; list是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());
    }
});