【发布时间】:2017-01-31 22:47:04
【问题描述】:
我正在使用适用于 Android 的 Firebase,但遇到了 limitToLast() 查询的一些不当行为。我正在尝试做的是获取列表的最后一个子节点,并遍历该节点的其他子节点:
database.getReference().child("draws").limitToLast(1).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot snap: dataSnapshot.getChildren()){
//Some work
snap.getValue()
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
//Some error handling
}
});
假设,我正在使用 limitToLast(1) 来获取子 draws/2(请参阅下面的数据库快照),它是抽奖列表中的最后一个。之后,我使用 dataSnapshot.getChildren() 来获取 draws/2 节点的子节点列表。遍历 dataSnapshot.getChildren() 列表后我应该得到什么:“85”、“86”、“60”、“7”作为循环中的 snap.getValue().toString() 单独的值。
我实际上得到的是最后一个孩子的价值,而没有访问它的孩子。结果:“[85, 86, 60, 7]”。看起来 dataSnapshot.getChildren() 没有获取节点 draws/2 的子节点,而只是获取节点的整个值。
作为测试,我尝试摆脱 limitToLast(1) 查询并用 child("2") 替换,一切正常。
我可能误解了 limitToLast() 的功能,但是,如果是真的,我怎样才能访问最后一个节点的子节点?
【问题讨论】:
标签: android firebase firebase-realtime-database