我在数据库中有这个:
https://codepen.io/anon/pen/YEPMLb
当教师添加课程和部分时,会使用节点push()
下的Class
生成随机ID。
还有Student
和Teacher
节点,其中包含ID和属性。
学生加入课程,因此也会在ClassStudent
中使用上述属性创建随机ID。
在节点Student
中,id是当前的userid
,在其下面有属性。现在我的问题是,它是从Student
节点检索名称并将其添加到ClassStudent
节点的好方法吗?
我正在使用此代码:
DatabaseReference gets=FirebaseDatabase.getInstance().getReference().child("Student");
final DatabaseReference getid=FirebaseDatabase.getInstance().getReference().child("Class");
ValueEventListener valueEventListener1= new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot child: dataSnapshot.getChildren()) {
String classnames = child.child("Classname").getValue().toString();
if (returnString.equals(classnames)) {
String getids = child.getKey();
newtable.child("ClassId").setValue(getids);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
getid.addValueEventListener(valueEventListener1);
我有一个名字的原因是因为我以后想点击一个类并获得该类中的名字列表。因此,如果我在节点ClassStudent中添加Student id
(已经完成),我将如何点击检索Students
的名称而不在ClassStudent
中有学生名?
编辑:
如果我在ClassStudent
上查询,我想在一个活动中检索类名,然后在另一个活动上检索,我想检索一个类的学生名称。我不希望Studentname
在ClassStudent中,因为从逻辑上看,我觉得它似乎不正确。
实施例: 1.学生在课堂上注册自己(带有属性classid的随机id,并创建studentid)。
然后我想检索onResume()
中的类名,所以登录后的类就在活动中(比如ClassStudent
和Class`之间的联接)
在完全不同的活动中,我想检索列表中的studentnames
,同时还要查询ClassStudent
(例如ClassStudent
和Student
之间的联接)
查询后输出#3.
Peter Haddad
John
Phillip
//names
答案 0 :(得分:1)
要获取ClassStudent
节点下的所有stundet名称,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference classStudentRef = rootRef.child("ClassStudent");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String Studentname = ds.child("Studentname").getValue(String.class);
Log.d("TAG", Studentname);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
classStudentRef.addListenerForSingleValueEvent(eventListener);
你的外出将是:
Peter Haddad
//other names