【问题标题】:How to retrieve a unique ID from a Firebase database?如何从 Firebase 数据库中检索唯一 ID?
【发布时间】:2017-01-24 22:09:08
【问题描述】:
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"

这是我的 JSON Firebase 数据库的示例。我需要知道的是如何检索这些唯一标识符? KbFaJVwP1HKu-rHfrjTKbGl_FZUr-BMACkvVh5KbHHX27kjH8TgoE1PwWKbHHX27kjH8TgoE1PwWKbHHX27kjH8TgoE1PwW

使用getKey 方法返回值仅返回主键的名称,在本例中为question,但我需要这些唯一标识符才能访问它们以供使用。

【问题讨论】:

  • 你试过 object.getKeys(..) 吗?
  • 我不认为 getKeys() 是可用的方法。你能发布一个示例代码吗?
  • 这是一个 JavaScript 函数。 stackoverflow.com/a/8430501/4290127
  • 谢谢,在 Java 中没有这样的方法,反正也不是那个名字。
  • 如果没有任何项目限制,我会建议完全放弃 Java。该语言过于僵化,无法与类似 Firebase 的数据模型一起使用。我自己是一个经验丰富的 Java 开发人员(观点是我自己的)

标签: java android firebase firebase-realtime-database


【解决方案1】:

您必须使用 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) { 
}

         });

【讨论】:

    【解决方案2】:

    这个怎么样:

    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());
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-20
      • 1970-01-01
      • 1970-01-01
      • 2013-04-02
      • 2016-11-27
      • 1970-01-01
      相关资源
      最近更新 更多