我想在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));
我该怎么办?
答案 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数据库规则以进行读写< /强>
由于