2017-01-09 67 views
0

我想在我的應用中顯示用戶列表。我使用來自Firebase的默認Auth系統。但迴應總是空的。無法獲取用戶列表

FIRDatabase.database().reference().child("users").queryOrdered(byChild: "email").observe(.value, with: { snapshot in 
         print(snapshot) 
        }) 

snapshot總是Snap (users) <null>

+0

使用Firebase身份驗證不會自動將任何內容放入您的Firebase數據庫。如果你還沒有,你可能想在用戶註冊時向'MyDatabase/users'添加一些東西。 – Connor

+0

@ConnorNeville所以添加一些字段或修改/刪除身份驗證用戶我應該創建我自己的用戶鏈接到身份驗證用戶? – Arti

+0

@Arti是的。我會發佈一個概述該過程的答案。 – Connor

回答

2

通過Firebase身份驗證註冊用戶時,默認情況下不會修改您的Firebase數據庫。認證和數據庫是兩個非常不相關的服務。這是一個常見的做法,一旦你註冊一個用戶,保存在數據庫中的條目與他們uid,這樣你就可以把這兩個服務:

let auth: FIRAuth? = FIRAuth.auth() // The authentication object 
auth?.createUser(withEmail: email, password: password) { (user, error) in 
    // If registration was successful, `user` is a FIRUser with a uid 
    if let userId = user?.uid { 
     let exampleDBPath = FIRDatabase.database().child("users").child(userId) 
     // Write the user object, for instance a user name or other data, to this path 
     exampleDBPath.setValue(someJSONAboutTheUser) { (error, result) in 
      // Now you have a spot to modify your user in the database 
     } 
    } 
} 

FIRUser從註冊創建相同類型的對象你」當用戶嘗試登錄時會得到,所以你可以通過同一個uid在數據庫中找到正確的用戶。

+0

我只是想在用戶登錄後刪除匿名用戶。所以需要離開這個帳戶? – Arti

+0

如果我理解正確,如果用戶匿名登錄,則不要在數據庫中存儲任何內容。然後,一旦他們用一個賬戶登錄,通過他們的uid獲取當前用戶的路徑。 – Connor

+0

http://stackoverflow.com/questions/41555145/remove-anonymous-user-from-auth-database你能檢查我的新問題:) – Arti

3

的火力地堡認證系統不會自動插入任何物件火力地堡數據庫。我猜你的數據庫是空的,這就是snapshotnull的原因。

你的代碼看起來是正確的,但正如我所說的,數據庫中可能沒有任何數據可以接收。

根據您想要達到的目標,您應該考慮將用戶元數據存儲在您的數據庫中。這樣做的好處是在用戶創建後直接進行。