我有以下 json 结构:
"Question_Score" : {
"anna_01" : {
"categoryID" : "01",
"categoryName" : "Intelligence",
"question_Score" : "anna_01",
"score" : "20",
"user" : "anna"
},
"anna_03" : {
"categoryID" : "03",
"categoryName" : "Constitution",
"question_Score" : "anna_03",
"score" : "170",
"user" : "anna"
},
"stelios_01" : {
"categoryID" : "01",
"categoryName" : "Intelligence",
"question_Score" : "stelios_01",
"score" : "230",
"user" : "stelios"
},
"stelios_02" : {
"categoryID" : "02",
"categoryName" : "Widsom",
"question_Score" : "stelios_02",
"score" : "220",
"user" : "stelios"
},
我想为当前用户获取类别 ID 和分数。所以可能我需要检查相等性 currentuser == user 然后获取该用户的 categoryID 和分数。由于我是 Firebase 的新手,我发现它有点困难。
final FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference ref = database.getReference("Question_Score");
// Attach a listener to read the data at your profile reference
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Profile profile = dataSnapshot.getValue(Question_Score.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.v("The read failed: " + databaseError.getCode());
}
});
我不知道如何从这里获取 CategoryId 和 score 的值来检查是否相等。我会提供任何帮助!
最佳答案
如果我对您的理解正确,您正在尝试读取 Question_Score
具有特定 categoryID
值的子节点。您可以通过对 categoryID
属性进行 Firebase 数据库查询来做到这一点:
database = FirebaseDatabase.getInstance();
questionScoreRef = database.getReference("Question_Score");
Query query = questionScoreRef.orderByChild("categoryID").equalTo("01");
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
Log.i(TAG, childSnapshot.getKey()+": "+childSnapshot.child("user").getValue(String.class));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Getting Post failed, log a message
Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
// ...
}
};
questionScore.addValueEventListener(postListener);
这会打印每个子节点的 categoryID
为 "01"
的键和 user
值。
关于android - 从 Firebase 获取特定用户的分数和类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51573174/