使用错误数据的Firebase查询不会给出任何回调

时间:2016-06-14 12:32:33

标签: android firebase firebase-realtime-database

我在firebase中创建了一个表并保存了几个数据,并希望通过指定输入来查询特定数据,例如Sqlite中的where where:

Query queryRef = ref.orderByChild("name").equalTo(username); 

queryRef.addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(DataSnapshot dataSnapshot, String previousChild) { 
       // i get the call back if i specify username which is already there in table 
    } 
});

我的问题是当我传递表中不存在的任何值时,我没有得到任何回调。

如何在Firebase中处理此类方案。还有其他任何我应该听的回电吗?

2 个答案:

答案 0 :(得分:1)

使用addListenerForSingleValueEvent替换您的addChildEventListener侦听器以获得单个值,您可以像下面一样反复回调,

 Query queryRef = ref.orderByChild("name").equalTo(username);
        queryRef.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                //if match your data otherwise return null
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

答案 1 :(得分:1)

您应该使用addValueEventListener()。您可以在other similar question找到更多详细信息。

但是您的代码将如下所示,您将能够使用snapshot.exists()查看是否存在匹配结果。

 Query queryRef = ref.orderByChild("name").equalTo(username); 

 queryRef.addValueEventListener(new ValueEventListener() {

     @Override
     public void onDataChanged(DataSnapshot snapshot) {
       if (snapshot.exists()) {
         //found results
       }
       else {
         //not found
       }
     }

  });