Firebase - получить базу данных с одним элементом - PullRequest
0 голосов
/ 10 июня 2019

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

База данных реального времени Ionic 4 Firebase

Структура базы данных:

https://.......com/projectName/bills/
-Lh-LgSqR1vSANRnA09G{
amount: xxx
name: xxx
}
-Lh-LhZachVgF7rnqW-1{
amount: xxx
name: xxx
}
-Lh-LiyC3ve4DrKmdTEj{
amount: xxx
name: xxx
}
  getKey(){
    var refKey = firebase.database().ref('bills');
    refKey.once('value', function(snapshot){
      snapshot.forEach(function(childSnap){
        var billKey = childSnap.key;
        console.log('Key 1 ' + billKey);

      });
    });
  }

И я получаю такой результат:

Key 1 -Lh-LgSqR1vSANRnA09G
Key 1 -Lh-LhZachVgF7rnqW-1
Key 1 -Lh-LiyC3ve4DrKmdTEj

Ключи хороши, но для всех элементов.

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

ОБНОВЛЕНИЕ:

<ion-item style="color: grey;" *ngFor='let bill of myService.bills' slot='start' lines='none' (click)='getKey()'>
<p>  {{bill.name}}:  {{ bill.amount}} zł  </p>
</ion-item>

Ответы [ 2 ]

1 голос
/ 10 июня 2019

В вашем коде вы зацикливаетесь, и поэтому вы извлекаете все ключи и элементы внутри ключей.Чтобы решить вашу проблему, вы можете сделать следующее:

  getKey(){
    var refKey = firebase.database().ref('bills').child("-Lh-LgSqR1vSANRnA09G");
    refKey.once('value', function(snapshot){
        var amount = snapshot.val().amount;
        var name   = snapshot.val().name;
    });
  }

Это позволит получить данные, относящиеся к ключу "-Lh-LgSqR1vSANRnA09G"

0 голосов
/ 10 июня 2019

Вам нужно передать элемент, по которому щелкнули, в вашем (click) обработчике:

<ion-item *ngFor='let bill of myService.bills' (click)='getKey(bill)'>

Затем вы можете использовать информацию из этого элемента в вашей функции:

getKey(bill){
  console.log(bill.name);
}

Теперь я не уверен, как вы заполняете bills, так как вы не поделились этим кодом.Но чтобы прочитать ключ из bill, вам нужно убедиться, что элементы в bills содержат этот ключ, когда вы читаете его из базы данных.Так что , если вы в настоящее время используете только snapshot.val() или valueChanges(), вам может потребоваться изменить это значение, чтобы также использовать snapshot.key или использовать docChanges().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...