如何从firebase中提取特定值

时间:2017-04-07 11:27:40

标签: android firebase firebase-realtime-database

我正在开发应用程序,我需要从firebase中提取特定值。对于这种情况,我需要拉“分数”,其中“uID”等于当前用户ID。什么是最好的方法。

感谢您的帮助。

enter image description here

1 个答案:

答案 0 :(得分:1)

Firebase将始终返回完整节点。所以你不能只为用户返回分数。但是可以使用Firebase查询返回分数和用户所在的公共节点(以-K...开头的公共节点):

DatabaseReference leadersRef = FirebaseDatabase.getInstance().getReference("Leaders");
Query query = leadersRef.orderByChild("uID").equalTo("vUdnKx...");
query.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot snapshot) {
        for (DataSnapshot child: snapshot.getChildren()) {
            System.out.println(child.getKey()+": "+child.child("Score").getValue(Long.class));
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        // Getting Post failed, log a message
        Log.w(TAG, "onCancelled", databaseError.toException());
        // ...
    }
})

请注意,代码会在结果中的snapshot上循环。这是因为查询可能会有多个结果。因此快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。

如需更多阅读,请参阅Firebase documentation on handling listssorting and filtering data