Firebase Java Query.equalTo()不起作用

时间:2015-04-10 04:35:14

标签: java firebase

我试图了解此方法的工作原理。我已经完成了所有设置,并将一些字符串推送到我的firebase的根目录。我引用了我的firebase,然后我尝试以这种方式创建一个Query对象

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

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

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

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

编辑:我忘了提及word是静态的,其中一个是我推送到firebase的。我这样做是为了测试功能。

1 个答案:

答案 0 :(得分:1)

我创建了这个最小的样本,并在JDK 1.8.0_31中运行它:

public static void main(String[] args) throws Exception {
    Firebase ref = new Firebase("https://stackoverflow.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

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