Как получить данные из базы данных Firebase?

Я пытаюсь создать простую программу, которая берет имя пользователя, номер мобильного телефона и адрес электронной почты от пользователя, а затем помещает данные в базу данных Firebase Realtime.

Существует 3 поля ввода и кнопка, которая на клике делает вышеуказанную операцию. Вот код:

<input type="text" id="name">
<input type="text" id="mobile">
<input type="text" id="email">

<button type="button" id="button" onclick="addLead()">Submit</button>

Я создал Firebase следующим образом:

<script src="https://www.gstatic.com/firebasejs/3.2.0/firebase.js"></script>
<script>
  // Initialize Firebase
  var config = {
    ...
  };
  firebase.initializeApp(config);

  var database = firebase.database();
</script>

И вот моя функция addLead():

function addLead() {
    var clientName = document.getElementById('name').value;
    var clientMobile = document.getElementById('mobile').value;
    var clientEmail = document.getElementById('email').value;

    var newClientKey = database.ref().child('leads').push().key;
    database.ref('leads/'+newClientKey+'/name').set(clientName);
    database.ref('leads/'+newClientKey+'/mobile').set(clientMobile);
    database.ref('leads/'+newClientKey+'/email').set(clientEmail);
}

Вот как я помещаю данные в базу данных, которая работает.

введите описание изображения здесь

Итак, newClientKey генерирует некоторую строку, она хорошо работает при вставке, но теперь как ее восстановить? Официальная документация не поможет. Эта сгенерированная строка может быть основана на отметке времени, если бы случай, когда он был создан снова, был бы невозможным.

При получении способа получения доступа к электронной почте, мобильному телефону и имени под этой уникальной строкой, доступной только при вставке?

Следуя приведенной выше структуре, мне нужно получить 2 уровня для доступа к требуемым данным и из-за отсутствия документации, я не знаю, как это сделать, я не уверен, что что-то подобное будет работать

database.child().child();

Ответ 1

Ответ на этот вопрос похоронен глубоко в Firebase Справочник по базам данных. forEach() используется для перехода к ребенку без знания точного пути ребенка.

var leadsRef = database.ref('leads');
leadsRef.on('value', function(snapshot) {
    snapshot.forEach(function(childSnapshot) {
      var childData = childSnapshot.val();
    });
});

Теперь childSnapshot будет содержать требуемые данные, к тому же можно получить доступ с помощью child_added.

leadsRef.on('child_added', function(snapshot) {
      //Do something with the data
});

Единственное различие заключается в том, что в случае forEach() он будет проходить с самого начала, поэтому, если будут добавлены новые данные, он также загрузит предыдущие данные, но в случае child_added, слушатель будет только на нового ребенка, а не на предыдущих существующих дочерних элементов.

Ответ 2

Как я могу сделать это в функции, где я должен скопировать значения, прочитанные в некоторые переменные внутри этого

Ответ 3

Как мне получить данные с другого UID, используя этот код?