【发布时间】:2018-10-10 09:52:15
【问题描述】:
JSON 数据显示了各个学院的可用学科:
{
"AvailableDisciplines": {
"4JN": {
"Disciplines": {
"CV": {
"disciplineCode": "CV",
"disciplineName": "Civil Engineering",
"siNo": "1"
},
"EC": {
"disciplineCode": "EC",
"disciplineName": "Electronics and Communication Engineering",
"siNo": "2"
},
"EE": {
"disciplineCode": "EE",
"disciplineName": "Electronics and Electricals Engineering",
"siNo": "3"
}
}
},
"4MT": {
"Disciplines": {
"EE": {
"disciplineCode": "EE",
"disciplineName": "Electronics and Electricals Engineering",
"siNo": "1"
},
"CS": {
"disciplineCode": "CS",
"disciplineName": "Computer Science Engineering",
"siNo": "2"
},
"IS": {
"disciplineCode": "IS",
"disciplineName": "Information Science Engineering",
"siNo": "3"
}
}
},
"1KT": {
"Disciplines": {
"TE": {
"disciplineCode": "TE",
"disciplineName": "Telecommunication Engineering",
"siNo": "1"
},
"CS": {
"disciplineCode": "CS",
"disciplineName": "Computer Science Engineering",
"siNo": "2"
},
"IS": {
"disciplineCode": "IS",
"disciplineName": "Information Science Engineering",
"siNo": "3"
}
}
}
}
}
其中 4JN、4MT 和 1KT 是学院代码。如果我想查询所有提供土木工程学科的大学,我必须在 AvailableDisciplines 节点上编写一个深度查询。查询代码为:
FirebaseDatabase.getInstance().getReference()
.child("Trial").child("AvailableDisciplines")
.orderByChild("Disciplines/EE").startAt("")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Log.v("log", "datasnapshot: " + String.valueOf(dataSnapshot));
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
}));
我能够按照我的期望获取数据。但是,我不知道如何为这种情况编写 .indexOn 规则。你能帮帮我吗?
【问题讨论】:
标签: android firebase firebase-realtime-database firebase-security