如何将用户当前用户详细信息插入Firebase中的另一个节点?

时间:2018-11-26 09:24:26

标签: java android firebase firebase-realtime-database

我正在使用此方法在Android的Firebase数据库中的“请求节点”中插入数据,

public void submitRequest(View v) {
Request myUserInsertObj = "Pending";
rootReference.child("Request").child("Pending").child(firebaseuser.getUid()).setValue
(myUserInsertObj);    
}

这是我的请求类别。

Public class Request{

public String request_status;

public Request(String request_status){

this.request_status = request_status;
}

Request()
}

我在firebase文档中发现可以使用firebaseuser.getDisplayName来获取当前登录的用户名。但是自从我在应用程序中创建了自己的登录表单和用户注册以来,.getDisplayName将在哪里获得用户名。

问题 2 : 如果我这样做,这可能吗?因为我想在请求的来宾节点中放置一个名称,以便当我在HTML Web管理面板中检索该名称时,数据将更易于阅读。

  rootReference.child("Request")
        .child("Pending")
        .child(firebaseuser.getUid())
        .setValue(myUserInsertObj + firebaseuser.getDisplayName);

如果是这样,我应该在我的请求类中添加什么?

问题 3 。 如何添加时间戳我知道时间戳在每个系统上的数据插入中都非常重要。

1 个答案:

答案 0 :(得分:1)

  

我在firebase文档中发现可以使用firebaseuser.getDisplayName来获取当前登录的用户名。

是的,没错。在FirebaseUser对象上调用getDisplayName()

  

从Firebase项目的用户数据库中返回该用户的主要显示名称。

关于问题的第二部分:

  

但是,由于我在应用程序中创建了自己的登录表单和用户注册,.getDisplayName将从何处获取用户名。

如上所述,getDisplayName()为您获取了来自身份验证过程的名称。如果要从自定义用户对象中获取用户名,则应首先从数据库中获取该用户对象,并在需要时使用它。

  

因为我想在请求节点中放置一个名称,以便当我在HTML Web管理面板中检索名称时,数据将更易于阅读。

如果要在节点中添加名称,则应将显示名称传递给child()方法,并传递给setValue()。您的代码应如下所示:

rootReference.child("Request")
    .child("Pending")
    .child(firebaseuser.getUid() + "_" + firebaseuser.getDisplayName())
    .setValue(myUserInsertObj);

此代码将生成一个看起来像这样的孩子:

Firebase-root
   |
   --- Request
        |
        --- Pending
              |
              --- SxbVg0...uobvk1_Theodore
                    |
                    --- //user details

DatabaseReference类具有4个重载的setValue()方法,但是这些方法均不允许您将对象与String一起作为参数传递。

  

问题3.如何添加时间戳我知道时间戳在每个系统上的数据插入中都非常重要。

This 是您如何添加并获取所讨论的时间戳的方法。