在特定条件下从 firebase 数据库中检索数据

Posted

技术标签:

【中文标题】在特定条件下从 firebase 数据库中检索数据【英文标题】:Retrieve data from firebase database with certain conditions 【发布时间】:2016-11-19 12:19:13 【问题描述】:

美好的一天,我正在使用 android Studio 创建一个基于问答的游戏,我有两件事正在努力解决。我有一个具有以下结构的 firebase 数据库:

database name
    answers
         1
            answer_option_1: .....
            answer_option_2: .....
            answer_option_3: .....
            answer_option_4: .....
           
         2
            answer_option_1: .....
            answer_option_2: .....
          

所以它继续类似于上面显示的结构。 我的问题是关于如何检索答案选项并将它们存储在各自的变量中?如:

选项1 = answer_option_1

有没有办法统计parent下的child数,比如应该告诉我parent 2下有2个child?

我的检索单个值的代码如下:

 mDatabase.child("answers").child(num).child("answer_option_1").addListenerForSingleValueEvent(new ValueEventListener() 
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) 

            Option1 = dataSnapshot.getValue().toString();
            option1.setText(Option1);
        

        @Override
        public void onCancelled(DatabaseError databaseError) 

        
    );

其中 mDatabase 是对我的 Firebase 数据库的引用,而 num 是用于检索随机问题的随机值。对于 4 个选项,我已经将上面的代码重复了 4 次,但是当我有 2 个选项时,如上面的数据库结构中提到和所示,我的应用程序停止工作。

我们将不胜感激所有帮助。

【问题讨论】:

如果您想获得所有 4 个答案选项,为什么还要使用 child("answer_option_1") 我不明白你为什么关心计算孩子的数量 @adolfosrs 我想计算孩子的数量,这样我就可以设置每个问题的选项数量。 @PrathamPatel “设置选项数量”是什么意思?您可以通过获取 options 数组大小来获取此数据。如果您还有任何疑问,请告诉我。 【参考方案1】:

我仍然不明白您为什么要计算孩子,但您可能有兴趣使用 ChildEventListener/answers/num 中的每个孩子获取回调。

设置一个跟踪选项的列表:

List<String> options = new ArrayList<>();

在加载视图或其他任何内容时,请确保启动侦听器:

 mDatabase.child("answers").child(num).addChildEventListener(new ChildEventListener() 
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot) 
            String option = dataSnapshot.getValue().toString();
            options.add(option);
        

        @Override
        public void onCancelled(DatabaseError databaseError) 

        
    );

【讨论】:

以上是关于在特定条件下从 firebase 数据库中检索数据的主要内容,如果未能解决你的问题,请参考以下文章

在 ChildByAutoId 下从 Firebase 检索数据并添加到数组 - Xcode - Swift

SwiftUI 如何在不使用 List 的情况下从 @ObservedObject ViewModel 获取 Firebase 数据

在不调用 addValueEventListener 的情况下检索 firebase 数据库中的数据 [重复]

在不对所有记录执行循环的情况下从数据库中检索特定数据的最有效方法是啥?

如何从日期之间的条件下从数据库表中检索数据?

在特定条件下从数据框中提取行