你可以通过孩子来计算
firebase_node.once('value', function(snapshot) { alert('Count: ' + snapshot.numChildren()); });
Run Code Online (Sandbox Code Playgroud)
但我相信这会从服务器中获取该节点的整个子树.对于巨大的列表,这似乎是RAM和延迟密集型.有没有办法获取计数(和/或子名称列表)而不取出整个事物?
我在我的Android应用程序中使用Firebase作为聊天功能.我的目标是支持:
第一部分似乎很容易.我创建了一个带限制的firebase引用.
ref = new Firebase(FIREBASE_URL).child("chat").limitToFirst(50);
Run Code Online (Sandbox Code Playgroud)
然后,该引用由添加侦听器的适配器使用.然后在数据发生变化时修改List.
ref.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName) {...}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {...}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {...}
...
Run Code Online (Sandbox Code Playgroud)
第二部分是我努力寻找正确方法的地方.当用户到达列表的末尾时,我想加载较旧的消息并将它们添加到消息列表中(无限滚动).
首选的解决方案是简单地调用类似ref.changeLimitToFirst(100)但不存在这样的方法.
用firebase解决这个问题的最佳方法是什么?
编辑:
我删除了我最初建议的解决方案,因为它们没有帮助澄清问题.相反,我将列出自我最初提出问题以来我发现的新解决方案.
如果您知道更好,更优雅的方法,请留下答案!