#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"
}
}
}