【发布时间】:2018-10-03 15:36:02
【问题描述】:
在我们的数据库结构中,每个“用户”拥有多个投标 ID,每个投标 ID 代表“工作”数据库中的一个入口点。
目前,当我们想要遍历一个人的所有工作时,代码看起来类似于:
final DatabaseReference mDatabaseJobs = FirebaseDatabase.getInstance().getReference().child("Jobs");
DatabaseReference mDatabaseUser = FirebaseDatabase.getInstance().getReference().child("Users").child(currentUser.getUid());
mDatabaseUser.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
DataSnapshot userBids = dataSnapshot.child("listOfBids");
final int num_user_bids = (int) userBids.getChildrenCount();
for(final DataSnapshot job : userBids.getChildren()){
String jobId = job.getValue(String.class);
mDatabaseJobs.child(jobId).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
bid_count.addAndGet(1);
这是数据库结构,目标是获取特定人员的所有工作。
有没有办法一次检索所有作业?也许是键列表?而不是为每个调用添加侦听器?
如果不是,我知道 firebase 异步获取数据,但它是并行执行的吗?
即我们目前增加一个原子整数以了解 firebase 是否已经获取所有作业,因为我们不希望线程同时增加计数器,在我们当前的实现中是否有必要?
谢谢!
【问题讨论】:
-
请添加您的数据库结构并指明您想要获取的确切数据。
标签: android firebase firebase-realtime-database android-asynctask