2016-06-14 67 views
2

我在火力創建表並保存數據耦合,並希望通過指定輸入等來查詢具體的數據,其中條件SQLite中:有錯誤的數據火力地堡查詢沒有提供任何回電

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中處理這種情況。有沒有其他迴應我應該聽?

+0

嘿@Atmaram,讓我知道如果我的回答不清楚或者您還有其他問題。謝謝! – adolfosrs

回答

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) { 

      } 
     }); 
+0

onDataChange被調用,但dataSnapshot總是有空值 – Atmaram

+0

你正在做一些事情是錯誤的,因爲我最近測試它的工作正常, –

+0

或更多的另一個事情字符串與數據完全匹配,然後它返回其他明智它返回null, –

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 
     } 
    } 

    }); 
+0

隨着任何輸入它的返回false到snapshot.exists() – Atmaram

+0

@Atmaram你嘗試加載onCancelled並從那裏調試回調?它顯示任何錯誤? – adolfosrs