Kotlin, база данных Firebase о ее подключении

Я хочу получить данные одного из моих пользователей в базе данных firebase. Но как я могу это сделать?

Kotlin, база данных Firebase о ее подключении

Я просто хочу получить доступ к данным пользователя, которого я отметил

(enter code here)                            
      mRef.child("users").addListenerForSingleValueEvent(object : ValueEventListener{
        override fun onDataChange(snapshot: DataSnapshot) {
            if (snapshot!!.getValue()!= null){
                for (user in snapshot.children){
                    var sanMar=user.getValue(Users::class.java)
                    button4.setOnClickListener {
                        textView13.text = "${sanMar!!.user_id}"
                        textView14.text = "${sanMar!!.adiSoyadi}"
                        textView15.text = "${sanMar!!.phoneNumber}"

Что не так с кодом, которым вы поделились? Когда вы запускаете его: что он делает и что вы хотите, чтобы он делал?

Frank van Puffelen 21.12.2020 01:06

С помощью этих кодов я могу связаться только с последним добавленным пользователем. Но я хочу получить доступ к информации пользователя, которого я хочу или выбираю.

kejmekan 21.12.2020 01:14

на данный момент "var sanMar=user.getValue(Users::class.java)" Я позаботился об этом, добавив внизу элемент управления if. но если у кого-то есть лучшее решение, я с нетерпением жду его. Спасибо

kejmekan 21.12.2020 02:32
Интеграция Angular - Firebase Analytics
Интеграция Angular - Firebase Analytics
Узнайте, как настроить Firebase Analytics и отслеживать поведение пользователей в вашем приложении Angular.
0
3
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы знаете UID пользователя, к которому хотите получить доступ, вы можете напрямую получить доступ к узлу этого конкретного пользователя (без запроса). Например, чтобы получить доступ к узлу для пользователя, который в данный момент вошел в систему, вы должны сделать:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
mRef.child("users").child(uid).addListenerForSingleValueEvent(object : ValueEventListener{
    override fun onDataChange(snapshot: DataSnapshot) {
        if (snapshot.exists()){
            var sanMar=snapshot.getValue(Users::class.java)
            ...
        }

В приведенном выше сценарии, поскольку вы напрямую обращаетесь к узлу для одного конкретного пользователя, вам не нужно зацикливаться на getChildren().


Если вы что-то знаете о пользователе, вы можете использовать запрос, чтобы найти пользовательские узлы, соответствующие этому условию. Скажем, например, вы знаете имя пользователя, которое вы можете отфильтровать с помощью:

DatabaseReference usersRef = mRef.child("users");
Query userNameQuery = usersRef.orderByChild("userName").equalTo("kejmekan");
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
userNameQuery.addListenerForSingleValueEvent(object : ValueEventListener{
    override fun onDataChange(snapshot: DataSnapshot) {
        for (DataSnapshot userSnapshot: snapshot.getChildren()) {
            var sanMar=userSnapshot.getValue(Users::class.java)
            ...
        }

Теперь вам нужно зациклиться, потому что запрос может соответствовать нескольким дочерним узлам.


Приведенные выше примеры представлены в коде Java, но их достаточно легко преобразовать в Kotlin.

Код 2 работал для меня. Именно так, как я хочу, спасибо за помощь,.

kejmekan 21.12.2020 18:49

Другие вопросы по теме