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

问题描述 投票:2回答:1

我使用这个在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.如何添加时间戳我知道时间戳在每个系统上的数据插入中非常重要。

java android firebase firebase-realtime-database
1个回答
1
投票

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

是的,这是正确的。在getDisplayName()对象上调用FirebaseUser

从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是你添加和获取你所谈论的时间戳的方式。

© www.soinside.com 2019 - 2024. All rights reserved.