android - 从 Firebase 获取特定用户的分数和类别

标签 android json firebase firebase-realtime-database

我有以下 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/

相关文章:

java - 如何使用 Google Time Zone API 获取 GMT

android - 如何使用 Cursor Loader 访问检索到的数据?

android - 无法解析 : org. roboelectric :roboelectric:3. 2.2

ios - 如何解析特定的谷歌地图API网络服务JSON响应

android - 使用 firebase 存储下载文件时 - 应用程序可能在其主线程上做了太多工作

swift - 如果用户在 Swift 中不活跃则发送推送通知

java - Android Firebase 使用地理定位来过滤数据

javascript - 如何在 Array 中查找使用 JSON.parse 产生错误的对象

java - Jackson 从根数组中获取 key 的值

android - 在 AlertDialog 中验证 EditText