Android Firebase实时数据库关系
我仍在努力学习NoSQL数据库及其与Android的集成 我以前有一个SQL数据库,它在表之间有一些关系,如下所示 使用者 int idAndroid Firebase实时数据库关系,android,firebase,firebase-realtime-database,nosql,Android,Firebase,Firebase Realtime Database,Nosql,我仍在努力学习NoSQL数据库及其与Android的集成 我以前有一个SQL数据库,它在表之间有一些关系,如下所示 使用者 int id 文本名称 int-groupId 团体 int id 文本名 在Firebase中,我这样实现它们 { "user": { "1": { "name": "Jon", "groups": { "group1": true
文本名称
int-groupId 团体 int id
文本名 在Firebase中,我这样实现它们
{
"user": {
"1": {
"name": "Jon",
"groups": {
"group1": true
}
}
},
"groups": {
"group1": {
"name": "Group 1"
}
}
}
在这里之前,我认为这很好,但当我用Java编写一些代码时,我不知道如何使用POJO。
以下是我迄今为止所做的:
public class Group {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class User {
private String name;
private Group groups;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Group getGroups() {
return groups;
}
public void setGroups(Group groups) {
this.groups = groups;
}
}
现在读数值。(在方法OnCreate上)
FirebaseDatabase=FirebaseDatabase.getInstance();
DatabaseReference myRef=database.getReference(“用户”);
myRef.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
Iterable children=dataSnapshot.getChildren();
DataSnapshot next=children.iterator().next();
用户值=next.getValue(User.class);
Group Group=value.getGroups();
}
@凌驾
已取消的公共无效(DatabaseError错误){
//无法读取值
}
});
但是我的组的值总是空的。我做错了什么??如何将用户与组关联?我发现的主要问题是
user
类中的Group
对象:
事实上,如果它保持在当前结构中,它不应该是一个自定义对象,而是一个映射。是地图对象-一个集合,它有一个键和一个值,就像实时数据库中的子对象一样
如果组
名称(=key)旁边没有true
(=value),则名称可以存储在字符串
变量中,但情况并非如此,因为实时数据库
中的每个子级都必须有一个值,并存储一个“伪值”组名称旁边的值使每个组成为映射的一部分。当前的“虚拟”是一个布尔值
,这就是为什么这将是组的数据类型:映射组
因此,您的用户
类应如下所示:
public class User {
private String name;
private Map<String,Boolean> groups;
公共类用户{
私有字符串名称;
私有地图组;
使用这种确切类型的一个好例子是
public class User {
private String name;
private Map<String,Boolean> groups;