簡體   English   中英

如何在FirebaseDatabase中執行搜索?

[英]How to perform search in a FirebaseDatabase?

描述

我的Firebase NoSQL數據庫應如下所示:

用戶數

每當新用戶登錄時,都應推送用戶Java模型。

問題

如何檢查具有電子郵件地址的用戶是否已經有一個帳戶? 由於電子郵件地址位於:根> PushID>電子郵件; 並且會自動生成推送ID,因此我不確定如何在所有推送ID上進行迭代,並檢查其中是否有將其電子郵件密鑰設置為指定值。

我已經閱讀了文檔,但無法弄清楚如何解決此問題。

從Shubhank的答案中學習

涉及孩子的Firebase方法可以應用於其任何孩子,無論其層次結構如何,即不限於直系孩子。

在此問題中,要搜索的孩子比普通父母低2級。 可以忽略第一級子級,而查詢方法可以直接應用於目標子級。

您應該首先為用戶創建模型類

class User { 
    public String email;
    public String name;
}

然后從數據庫中獲取用戶並將其映射到User對象

  1. 簡單遍歷所有結果查詢

     FirebaseDatabase database = FirebaseDatabase.getInstance(); // i don't know the end point since you have not specified it in the image database.getReference("myUsersEndPoint").addListenerForSingleValueEvent( new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for (DataSnapshot data : dataSnapshot.getChildren()) { User user = data.getValue(User.class); if (myField.getText().toString().eqaulsIgnoreCase(user.email)) { // exist } } } @Override public void onCancelled(DatabaseError databaseError) Log.w("MyApp", "getUser:onCancelled", databaseError.toException()); } }); 
  2. 僅搜索特定值在此示例中,我們使用orderByChildequalTo方法將結果限制為特定的子值

     FirebaseDatabase database = FirebaseDatabase.getInstance(); // i don't know the end point since you have not specified it in the image database.getReference("myUsersEndPoint").orderByChild("email").equalTo("emailToSearchhere").addListenerForSingleValueEvent( new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for (DataSnapshot data : dataSnapshot.getChildren()) { // here the user will have the specified email only } } @Override public void onCancelled(DatabaseError databaseError) Log.w("MyApp", "getUser:onCancelled", databaseError.toException()); } }); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM