如何使用java从Firebase检索新添加的子项的父键

时间:2018-01-06 07:35:38

标签: java firebase firebase-realtime-database

我想检索" 7753400075_Canada_twinpalms_ || _twinpalms_20170824001545_F5BA7F33AD51CE283332001BEC409A46"关键,怎么做?这是我的代码......

ref.addValueEventListener(new ValueEventListener() { //addListenerForSingleValueEvent
                @Override
                public void onCancelled(DatabaseError arg0) {
                }
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    Object response = dataSnapshot.getValue();
                    System.out.println("read data :"+response);
                }
            });
            ref.child("chatmessage").child("devicetoken").addChildEventListener(new ChildEventListener() {

                @Override
                public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName) {
//                  Log.d(TAG, "onChildAdded:" + dataSnapshot.getKey());
//                  System.out.println("previousChildName :"+previousChildName);

                    }
                }
});

以下是Firebase数据库示例:

Here is the Firebase database example

我尝试使用子数据快照方法,但没有奏效。它返回所有数据。但我只需要添加新的孩子父母。任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:0)

要解决此问题,您需要过滤结果。假设chatmessage是Firebase数据库根目录的直接子项,请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference deviceTokenRef = rootRef.child("chatmessage").child("devicetoken");
Query query = deviceTokenRef.orderByKey().limitToLast(1);
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String key = ds.getKey();
            Log.d("TAG", key);
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
query.addListenerForSingleValueEvent(eventListener);