Как я могу получить полный путь к дочернему узлу, используя orderByChild equalTo? - PullRequest
1 голос
/ 22 сентября 2019

Можно ли получить полный путь к дочернему узлу из запроса firebase с помощью orderByChild .equalTo?У меня есть .indexOn: "city"

Мои данные структурированы так:

firebase structure

Я пытался:

firebase.database().ref('users').orderByChild('city').equalTo('calgary').once("value", function(snapshot) {
  console.log(snapshot.ref.toString());
});

Я также пробовал:

console.log(snapshot.ref.toString());
//outputs: https://xxxx.firebaseio.com/users <-- WRONG, not full path.

console.log(snapshot.ref.path.toString());
//outputs /users <-- WRONG, not full path.

Как я могу получить полный путь - работая с найденным ключом?Ожидаемое: / users / uid / location /

1 Ответ

1 голос
/ 22 сентября 2019

Чтобы получить полный URL-адрес для данных, вы можете позвонить DatabaseReference.toString().

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

snapshot.ref.toString().substring(snapshot.ref.root.toString().length - 1)

Также см .: как получить firebase.database.Reference полный путь , который я собираюсь пометить как вопрос как дубликат.


Поскольку вы выполняете запрос к базе данных Firebase, потенциально может быть несколько результатов.Таким образом, снимок содержит список этих результатов.Даже если есть только один результат, снимок будет содержать список из одного результата.

Вам нужно циклически обработать эти результаты, и , тогда сможет получить путь к каждому отдельному узлу:

firebase.database.ref('users').orderByChild('city').equalTo('calgary').once("value", function(snapshot) {
  var rootPath = snapshot.ref.root.toString();
  snapshot.forEach(function(child) {
    console.log(child.ref.toString().substring(rootPath.length - 1));
  })
});

Оказывается, ваш поиск неправильный.Так как вы пытаетесь заказать / отфильтровать на location/city, это то, что вы также должны использовать в orderByChild():

firebase.database().ref('users').orderByChild('location/city').equalTo('calgary')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...