Android Firebase-生成唯一密钥,但不使用push();

Android Firebase-生成唯一密钥,但不使用push();,android,firebase,firebase-realtime-database,push,unique-key,Android,Firebase,Firebase Realtime Database,Push,Unique Key,我希望在firebase数据库中拥有自定义的唯一密钥(User1、User2、User3、User4……Usern) 当我使用push()时它生成一个长且不清楚的键,在排序时会使我感到困惑 我还尝试了child(“User1”)但它仅使用给定的User1键在数据库中保存一次。每次我想要覆盖数据库时,它只更新User1值 有没有更明智的选择来拥有自定义的唯一密钥 您应该研究使用来帮助您为Firebase数据库生成唯一密钥,而无需使用push() 这里有一个关于生成唯一密钥的另一个答案。您应该研究使

我希望在firebase数据库中拥有自定义的唯一密钥(User1、User2、User3、User4……Usern)

当我使用
push()时它生成一个长且不清楚的键,在排序时会使我感到困惑

我还尝试了
child(“User1”)
但它仅使用给定的
User1
键在数据库中保存一次。每次我想要覆盖数据库时,它只更新User1值

有没有更明智的选择来拥有自定义的唯一密钥


您应该研究使用来帮助您为Firebase数据库生成唯一密钥,而无需使用
push()


这里有一个关于生成唯一密钥的另一个答案。

您应该研究使用来帮助您为Firebase数据库生成唯一密钥,而无需使用
push()


这里是另一个关于生成唯一密钥的答案。

不要使用
push()
为用户生成唯一密钥,而是使用
user
对象的
uid
在数据库中拥有用户节点。您可以通过调用以下行获取当前登录用户的
uid
:-

uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
然后调用下一行将其用作数据库中的节点:-

mDatabase.child("users").child(uid).child("username").setValue("ABC");
这非常有效,因为:-

  • uid
    对于每个用户都是唯一的,是在数据库中拥有和识别用户节点的最简单、最可靠的方法,特别是在多个位置

  • uid
    登录用户可以通过上面的行从客户端Android应用程序轻松获取。因此,您不需要在客户端上专门保存和统计唯一ID。建议这样做不仅是为了简单,也是为了安全


  • 因此,
    uid
    节点是数据库中用户节点的理想选择。但是,出于所有其他目的,
    push()
    仍然是推荐的方法。

    不要使用
    push()
    为用户生成唯一密钥,而是使用
    user
    对象的
    uid
    在数据库中拥有用户节点。您可以通过调用以下行获取当前登录用户的
    uid
    :-

    uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
    
    然后调用下一行将其用作数据库中的节点:-

    mDatabase.child("users").child(uid).child("username").setValue("ABC");
    
    这非常有效,因为:-

  • uid
    对于每个用户都是唯一的,是在数据库中拥有和识别用户节点的最简单、最可靠的方法,特别是在多个位置

  • uid
    登录用户可以通过上面的行从客户端Android应用程序轻松获取。因此,您不需要在客户端上专门保存和统计唯一ID。建议这样做不仅是为了简单,也是为了安全


  • 因此,
    uid
    节点是数据库中用户节点的理想选择。但是,出于所有其他目的,
    push()
    仍然是推荐的方法。。但是您可以创建自己的自定义密钥。就像你想要的。但是你不需要做更多的额外工作。你必须先读取数据库

    FirebaseDatabase.getInstance().getReference().child("Users")
                .addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                           HashMap<String, Object> user = (HashMap<String, Object>) dataSnapshot.getValue();
                           totalUser= user.size();
    
                        }
              }
    
    这样结构就会像这样

    • 你的项目 -使用者 -用户1 -用户2

    等等….

    没有。。但是您可以创建自己的自定义密钥。就像你想要的。但是你不需要做更多的额外工作。你必须先读取数据库

    FirebaseDatabase.getInstance().getReference().child("Users")
                .addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                           HashMap<String, Object> user = (HashMap<String, Object>) dataSnapshot.getValue();
                           totalUser= user.size();
    
                        }
              }
    
    这样结构就会像这样

    • 你的项目 -使用者 -用户1 -用户2

    等等……

    这个问题我也面临,还是解决不了。我正在使用now push()。有谁能回答这个问题吗?他们在博客上写道如何解决这个问题我也面临着,仍然无法解决。我正在使用now push()。谁能回答这个问题?他们在自己的博客上写道怎么做