Звучит так, будто вы запрашиваете информацию, спрашивая "person 1", но в базе данных нет ключа со значением "person1". В иерархии «человек» есть ключ «1», и, возможно, это то, что вам нужно.
У вас есть несколько вариантов, в зависимости от того, что вы на самом деле пытаетесь сделать.
Вы можете изменить свои ключи, чтобы отразить то, что вы просите. Таким образом, вместо того, чтобы использовать «0» или «1» или «2» для ваших ключей, вы можете просто использовать «person1», или «person2», или «person3». Вам не нужно использовать числа в базе данных Firebase. Вы можете использовать, как хотите, чтобы ссылаться на данные.
Другой альтернативой является сохранение ключей в базе данных, как у вас, и когда человек говорит «person1», каким-то образом сопоставить это с правильным ключом, который находится в базе данных (то есть - «0»). Вы можете написать код для этого - в этом случае вам нужна подстрока параметра personId
. Так что, возможно, что-то вроде
let personKey = personId.substring(6);
и затем используйте personKey
в вашем ссылочном пути
var ref = db.ref( `person/${personKey}/${personMeasurement}` );
Однако это всего лишь примеры - как вы это сделаете, зависит от того, как вы хотите структурировать и получить доступ к вашим данным.
Важной частью является понимание того, как база данных Firebase позволяет вам получить доступ к данным. Данные хранятся в иерархии, и мы можем думать, что каждый узел в этой иерархии имеет путь к нему. В вашем примере у вас есть один узел наверху с именем «персона». Под этим узлом находятся несколько узлов, которые являются просто числами - один из примеров - узел с именем «0». Под узлом "0" у вас есть несколько узлов, включая один с именем "Alex".
Вы можете ссылаться на этот конкретный узел "Алекс", указав полный путь к нему. Мы разделяем имя каждого узла знаком "/". Таким образом, полный путь к этому конкретному «Алексу» будет person/0/Alex
. Чтобы получить значение в этом узле, мы можем построить объект ref
и затем использовать once("value")
, чтобы получить значение только один раз (в отличие от прослушивания его на предмет изменений).
Поскольку части этого «0» и «Alex» хранятся в переменных, нам нужно построить строку, содержащую эти значения. Одним из простых способов сделать это является использование литерала шаблона или "backtick string" в JavaScript. В этом типе строки оценивается все, что находится внутри ${}
. Итак, ${personKey}
означает вставить в строку значение personKey
.
.
Итак, линия
var ref = db.ref( `person/${personKey}/${personMeasurement}` );
означает «создать ссылку на узел в базе данных, начиная с узла« персона », затем найти узел под этим значением со значением в personKey
, затем найти узел под этим значением со значением в personMeasurement
».
Конечно, вы можете заменить personKey
и personMeasurement
на любые переменные, содержащие значения, которые вы будете искать в этой точке иерархии узлов. Вы можете построить эту строку другими способами и создать ссылку, используя другие инструменты. Важным моментом является понимание того, что ссылка относится к точке в базе данных и что вам необходимо создать эту ссылку, прежде чем вы сможете получить ссылку с этой точки.