简体   繁体   English

如何从 Firebase 数据库中检索唯一 ID?

[英]How to retrieve a unique ID from a Firebase database?

survey-6d90daddclose
 questions
 -KbFaJVwP1HKu-rHfrjT
     ans1: 
        "test"
     ans2: 
        "1"
     ans3: 
        "2"
     ans4: 
        "3"
     question: 
        "Testing"
 -KbFlP8A08y2k4Vp1XET
     ans1: 
        "test"
     ans2: 
        "test2"
     ans3: 
        "test3"
     ans4: 
        "test4"
     question: 
        "Testing"
 -KbGl_FZUr-BMACkvVh5
     ans1: 
        "aopskdpoaskd"
     ans2: 
        "askdaksd"
     ans3: 
        "aospkdpoaskd"
     ans4: 
        "alksdlaksd"
     question: 
        "aoskdpoaskd"
 -KbHHX27kjH8TgoE1PwW
     ans1: 
        "asdasd"
     ans2: 
        "asdasd"
     ans3: 
        "asdasd"
     ans4: 
        "asdasd"
     question: 
        "asdasd"
 -KbHHxHoh7_yiBcvXU0-
     ans1: 
        "asdasd"
     ans2: 
        "asdasd"
     ans3: 
        "asdasd"
     ans4: 
        "asdasdasd"
     question: 
        "questions"

This is a sample of my JSON Firebase database.这是我的 JSON Firebase 数据库示例。 What I need to know is how I can retrieve these unique identifiers?我需要知道的是如何检索这些唯一标识符? KbFaJVwP1HKu-rHfrjT , KbGl_FZUr-BMACkvVh5 , KbHHX27kjH8TgoE1PwW , KbHHX27kjH8TgoE1PwW and KbHHX27kjH8TgoE1PwW . KbFaJVwP1HKu-rHfrjTKbGl_FZUr-BMACkvVh5KbHHX27kjH8TgoE1PwWKbHHX27kjH8TgoE1PwWKbHHX27kjH8TgoE1PwW

Returning the values using method getKey only returns the name of the primary key, which in this case is question , but I need these unique identifiers to be able to access them for use.使用getKey方法返回值只返回主键的名称,在这种情况下是question ,但我需要这些唯一标识符才能访问它们以供使用。

You have to use a ChildEventListener or a ValueEventListener:您必须使用 ChildEventListener 或 ValueEventListener:

DatabaseReference ref=FirebaseDatabase.getInstace().getReference().child("questions");





    ref.addListenerForSingleValueEvent(new ValueEventListener() {
         @Override 
        public void onDataChange(DataSnapshot dataSnapshot)
         { for (DataSnapshot questionSnapshot : dataSnapshot.getChildren()) { 
//The key of the question
        String questionKey = questionSnapshot.getKey();
//And if you want to access the rest:
String ans1 = questionSnapshot.child("ans1").getValue(String.class);
    } 

        } 

        @Override
     public void onCancelled(DatabaseError databaseError) { 
}

         });

How about this:这个怎么样:

new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot child : dataSnapshot.getChildren()) { 
                 //Get keys individually.      
                 child.getKey(); 
            }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        System.out.println("The read failed: " + databaseError.getCode());
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM