Firebase находит пользователей с именем пользователя с помощью javascript

#javascript #firebase #firebase-realtime-database

#javascript #firebase #firebase-realtime-database

Вопрос:

Я пытаюсь найти пользователей по их значению имени пользователя в firebase. Я искал и пробовал следующее:

 firebase.database().ref().child("users").orderByChild('username').equalTo("testUsername").once('value', function (snapshot) {
  snapshot.forEach(function(childSnapshot) {
    console.log(childSnapshot.val().username);
  });
});
 

Вот как выглядит моя база данных:

 {
  "users" : {
    "Hr9AFYHgOBZKkBqCjST789NrTJX2" : {
      "profileData" : {
        "description" : "This is a description",
        "username" : "testUsername"
      },
    }
  }
}
 

Кто-нибудь может увидеть, что я здесь делаю не так? и как получить имя пользователя?

Ответ №1:

Попробуйте это

 firebase.database().ref().child("users").orderByChild('username').equalTo("testUsername").once('value').then(snapshot => {
  snapshot.forEach(function(childSnapshot) {
    console.log(childSnapshot.val().username);
  });
});
 

Ответ №2:

В orderByChild() вызове вам нужно указать весь путь к значению, которое вы хотите упорядочить / отфильтровать. Поскольку username вложено под profileData , то есть:

 firebase.database().ref().child("users").orderByChild('profileData/username').equalTo("testUsername").once('value', function (snapshot) {
  ...
 

Обратите внимание, что вам также нужно будет определить свой индекс для вложенного свойства, поэтому:

 {
  "rules": {
    "users": {
      ".indexOn": "profileData/username"
    }
  }
}