首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Firebase数据库中分层存储数据

在Firebase数据库中分层存储数据
EN

Stack Overflow用户
提问于 2016-12-21 02:20:47
回答 2查看 227关注 0票数 1

我尝试将用户的详细信息存储在Firebase中,格式如下:

代码语言:javascript
复制
User-Register
|
----1
    ---username:xyz
    ---phoneNo:9055505555
    ---password:abc
----2
    ---username.........

诸若此类。

我写了这段代码在应用程序中注册按钮的点击。我的java代码是:

代码语言:javascript
复制
String getUsername = register_username.getText().toString();
        String getPhoneNo = register_phoneNo.getText().toString();
        String getPassword = register_password.getText().toString();

        userRegistrationInfo store_User_Details = new userRegistrationInfo(getUsername, getPhoneNo, getPassword);


        FirebaseDatabase databaseInstance = FirebaseDatabase.getInstance();
        DatabaseReference reference_for_registration = databaseInstance.getReference("UserRegister");
        String childNumber=Integer.toString(count);
        reference_for_registration.child(childNumber).setValue(store_User_Details);
        count++;

我的userRegistrationInfo类是:

代码语言:javascript
复制
public class userRegistrationInfo {

    String username;
    String phone_number;
    String password;



    public userRegistrationInfo()
    {

    }
    public userRegistrationInfo(String username,String phone_number,String password)

    {
        username=this.username;
        phone_number=this.phone_number;
        password=this.password;

    }

    public String getUsername() {
        return username;
    }

    public String getPhone_number() {
        return phone_number;
    }

    public String getPassword() {
        return password;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setPhone_number(String phone_number) {
        this.phone_number = phone_number;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

在运行这段代码时,我在数据库中没有得到任何东西。我正在使用创建的对象的id的计数。但是数据库中没有为它更新任何内容。

如何在数据库中反映这些变化?

EN

回答 2

Stack Overflow用户

发布于 2016-12-21 05:18:40

最好从firebase获取新用户注册的唯一密钥。尝试在应用程序中单击注册按钮时修改您的代码。

代码语言:javascript
复制
    String getUsername = register_username.getText().toString();
    String getPhoneNo = register_phoneNo.getText().toString();
    String getPassword = register_password.getText().toString();

    userRegistrationInfo store_User_Details = new userRegistrationInfo(getUsername, getPhoneNo, getPassword);

    FirebaseDatabase databaseInstance = FirebaseDatabase.getInstance();
    DatabaseReference reference_for_registration = databaseInstance.getReference();

    String key = reference_for_registration.child("UserRegister").push().getKey();

    Map<String, Object> store_User_DetailsValues = store_User_Details.toMap();

    Map<String, Object> childUpdates = new HashMap<>();

    childUpdates.put("/UserRegister/" + key, store_User_DetailsValues);

    reference_for_registration.updateChildren(childUpdates);

添加到userRegistrationInfo类

代码语言:javascript
复制
@Exclude
public Map<String, Object> toMap() {
    HashMap<String, Object> result = new HashMap<>();
    result.put("username", username);
    result.put("phone_number", phone_number);
    result.put("password", password);

    return result;
}
票数 0
EN

Stack Overflow用户

发布于 2016-12-21 13:43:03

首先,为了清楚起见,在您的代码中键入UserRegister,但在数据库格式中声明为User-Register。是打字错误还是你可能需要检查一下。

其次,您需要澄清电话号码属性。Firebase数据库中的数据应该与自定义对象(在本例中为userRegistrationInfo类)中的属性get函数相同。因此,如果您的Firebase数据库属性被列为phoneNo,那么您的自定义对象应该具有getPhoneNo属性来存储数据。反之亦然。

更常见的是使用由Firebase自动生成的唯一id。您可以通过将您的代码替换为以下代码来完成此操作:

reference_for_registration.push().setValue(store_User_Details);

除此之外,我认为上面的代码应该可以很好地工作。尝试在setValue(store_User_Details)的末尾添加.addOnCompleteListener。在此基础上,如果出现问题,您可以澄清更多细节。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41248867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档