2017-01-09 7 views
0

Я хочу показать список пользователей в своем приложении. Я использую систему по умолчанию Auth от firebase. Но ответ всегда пуст.Не удается получить список пользователей

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

Но snapshot всегда Snap (users) <null>

+0

Использование Firebase Auth автоматически не помещает ничего в вашу базу данных Firebase. Если вы еще этого не сделали, вы, вероятно, захотите добавить что-то в «MyDatabase/users», когда пользователь регистрируется. – Connor

+0

@ConnorNeville, чтобы добавить некоторые поля или изменить/удалить пользователей Auth, я должен создать своих собственных пользователей со ссылкой на пользователей Auth? – Arti

+0

@Arti да. Я отправлю ответ, в котором будет излагаться этот процесс. – Connor

ответ

2

Регистрация пользователя с использованием Firebase Authentication по умолчанию не делает ничего, чтобы изменить вашу базу данных 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

Система Firebase аутентификации не автоматически вставлять что-либо в базу данных Firebase. Я предполагаю, что ваша база данных пуста, что является причиной для snapshot, являющейся null.

Ваш код выглядит правильно, но, как я уже сказал, в вашей базе данных не могут быть данные.

В зависимости от того, что именно вы хотите достичь, вам следует рассмотреть возможность хранения метаданных пользователя в вашей базе данных. Хорошим моментом для этого было бы сразу после создания пользователя.

Смежные вопросы