繁体   English   中英

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

[英]How can I add a list to a user in firebase?

我有一个正在构建的应用程序。

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

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

我想向每个用户添加(当他们首次登录时)另一个字段名称“ friends”并在其中保存一个列表。 我该怎么做?

我希望它是这样的:

在此处输入图片说明

假设“用户”的第一个孩子是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的文档

如果getUid出现问题,请尝试查看它是否不为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) {

                    }

我认为这应该对您有帮助

通常,当我需要存储列表时,可以通过使用java.utilList<>来实现。 如果您使用名为GenericTypeIndicator ,则可以直接输入自定义Java对象,以将其自动序列化到Firebase数据库中。

假设您的“朋友”列表是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());
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM