【问题标题】:Get score and Category for specific user from Firebase从 Firebase 获取特定用户的分数和类别
【发布时间】:2018-07-28 16:21:44
【问题描述】:

我有以下 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"
    },

我想为 currentuser 获取 categoryID 和 score。所以可能我需要检查相等 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 的值来检查相等性。我会寻求任何帮助!

【问题讨论】:

    标签: android json firebase firebase-realtime-database


    【解决方案1】:

    如果我理解正确,您正在尝试读取具有categoryID 特定值的Question_Score 子节点。您可以对 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 值。

    【讨论】:

    • 其实我想添加一个 if 语句,比如“if category = 01 && score = 100 do...所以我需要为用户设置这两个值。我会试试你的解决方案!跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 2019-07-03
    • 2020-11-05
    • 1970-01-01
    • 2018-04-21
    相关资源
    最近更新 更多