Чтобы получить полный 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')