Я хочу получить данные одного из моих пользователей в базе данных 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}"
С помощью этих кодов я могу связаться только с последним добавленным пользователем. Но я хочу получить доступ к информации пользователя, которого я хочу или выбираю.
на данный момент "var sanMar=user.getValue(Users::class.java)" Я позаботился об этом, добавив внизу элемент управления if. но если у кого-то есть лучшее решение, я с нетерпением жду его. Спасибо
Если вы знаете 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 работал для меня. Именно так, как я хочу, спасибо за помощь,.
Что не так с кодом, которым вы поделились? Когда вы запускаете его: что он делает и что вы хотите, чтобы он делал?