Firebase Java Query.equalTo() 不起作用

Firebase Java Query.equalTo() does not work

我正在尝试了解此方法的工作原理。我已设置好所有内容,并将一些字符串推送到我的 firebase 的根目录。我参考了我的 firebase,然后我试图以这种方式创建一个查询对象

Query refQ = ref.orderByValue().equalTo(word);

其中 word 与我推送到 firebase 的字符串相同。

我只想将该值打印到控制台。 发生的奇怪事情是控制台挂起,就像它处于无限循环中一样,我需要强制它终止。我在上面的代码行之后放了一个 print 语句,但它永远也达不到。

所以我的问题是,我做错了什么?

编辑:我忘了说 word 是静态的,是我推送到 firebase 的词之一。我这样做是为了测试功能。

我在 JDK 1.8.0_31:

中创建了这个最小的示例并且只是 运行
public static void main(String[] args) throws Exception {
    Firebase ref = new Firebase("https://Whosebug.firebaseio.com/29553461");

    /*
    Map<String,Object> map = new HashMap<String, Object>();
    map.put("puf", "Frank van Puffelen");
    map.put("frank", "Frank van Puffelen");
    map.put("david", "David East");
    map.put("east", "David East");
    ref.setValue(map);
    */

    Query refQ = ref.orderByValue().equalTo("Frank van Puffelen");
    refQ.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            System.out.println("Child added: "+dataSnapshot.getKey()+": "+dataSnapshot.getValue());
        }

        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) { }

        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) { }

        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) { }

        @Override
        public void onCancelled(FirebaseError firebaseError) { }
    });

    Console console = System.console();
    if (console != null) {
        console.format("Press ENTER to process.\n");
        console.readLine();
    }
    else {
        System.out.println("Sleeping for 5 seconds, in hopes that everything is done by then.");
        Thread.sleep(5000);
    }
}

它打印出来:

Child added: frank: Frank van Puffelen
Child added: puf: Frank van Puffelen

所以它对我来说似乎工作得很好。