dataSnapShot.getKey()没有返回实际的push键

时间:2017-04-29 13:32:12

标签: android firebase firebase-realtime-database

enter image description here

我试图通过子名称下划线蓝色下划线红色下划线红色,但我的代码返回产品作为dataSnapshot.getKey上的键,这里是代码: 的代码

    Query reference=FirebaseDatabase.getInstance().getReference().child("products").orderByChild("name").equalTo("iphon");
    reference.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String key=dataSnapshot.getKey();
            Log.e(TAG,key);

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
  

04-30 18:27:11.660 22742-22742 / com.example.zar.shopistant E / MainActivity:products

1 个答案:

答案 0 :(得分:3)

对Firebase数据库执行查询时,可能会有多个结果。因此快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。

因此,要获取单个子节点的快照,需要循环结果:

Query reference=FirebaseDatabase.getInstance().getReference().child("products").orderByChild("name").equalTo("iphon");
reference.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
            String key=childSnapshot.getKey();
            Log.i(TAG,key);
        }
    }