在特定条件下从 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 数据库中的数据 [重复]