将包含数组的对象添加到数据库FireBase

时间:2017-08-25 11:50:45

标签: java android firebase firebase-realtime-database

我想在firebase数据库中保存一个对象,该数据库包含一个数组。

当我使用它时:

mDatabaseReference.child("user").child(id).setValue(user);

我在数据库中看不到数组。

#####编辑#####

这是我的用户信息类:

public class UserInformation {


private String email1;
private String Password1;
public HashMap<String, Boolean> levels=new HashMap<>();

public UserInformation (String email, String Password){
    this.email1=email;
    this.Password1=Password;
    levels.put("level1", false);
    levels.put("level2", false);
    levels.put("level3", false);

}

它仍然无法正常工作,我在mt数据库的根目录中看不到我的哈希: 当我使用

 UserInformation user=new UserInformation(email1,password1);
                String id=mDatabaseReference.push().getKey();
                mDatabaseReference.child("user").child(id).setValue(user);
                startActivity(new Intent(getApplicationContext(),ProfileActivity.class));

我该怎么办?

2 个答案:

答案 0 :(得分:1)

Firebase的官方文档建议不要使用arrays。尝试使用数组,对Firebase来说是一种反模式。除此之外,Firebase建议不要使用数组的众多原因之一是它使安全规则无法编写。由于Firebase数据库的结构为键和值对,因此最佳选择是使用Map

下面是一个在两个不同引用上设置值的示例。

Map<String, Object> childUpdates = new HashMap<>();
childUpdates.put("/posts/" + key, postValues);
childUpdates.put("/user-posts/" + userId + "/" + key, postValues);
mDatabaseReference.setValue(childUpdates);

或使用对象:

UserInformation ui = new UserInformation(email, Password);
mDatabaseReference.setValue(ui);

希望它有所帮助。

答案 1 :(得分:0)

将对象保存到数据库中。

public class UserInformation {


private String email1;
private String Password1;
public HashMap<String, Boolean> levels=new HashMap<>();

public UserInformation (String email, String Password){
    this.email1=email;
    this.Password1=Password;
    levels.put("level1", false);
    levels.put("level2", false);
    levels.put("level3", false);

}

现在创建UserInformation类的对象。

     UserInformation user=new UserInformation(email1,password1);
DatabaseReference userReference = mDatabaseReference.child("user");
                    String id=userReference.push().getKey();
                    userReference.child(id).setValue(user);
                    startActivity(new Intent(getApplicationContext(),ProfileActivity.class));

如果这还没有成功,那么添加事件监听器并检查是否正在FirebaseDatabase上保存数据,并确保已更改firebase数据库规则以进行读写< /强>

由于