Невозможно получить значение ключа из базы данных Firebase в реальном времени - PullRequest
1 голос
/ 25 февраля 2020

first.Component. html

<div class="col-md-3">
 <button type="button" routerLink="editlots" class="btn btn-info" style = "font-size: 
         15px; text-align: center; margin:0 auto; display: block;">View Lots
 </button>
</div> 

second.component. html

<tr *ngFor="let it of lot$ | async">
 <td> {{it.alias}} </td>
 <td> {{it.area}} </td>
 <td> {{it.price}} </td>
</tr>

Здесь, в plats / bigfork / lots, bigfork является родительским ключом лотов. , но у меня есть и другие ключи, которые содержат того же ребенка, что и лоты с теми же данными. Итак, я хочу создать динамику c, которую я бы поставил вместо bigfork, чтобы я мог получить доступ к данным по конкретной кнопке, по которой я нажал.

second.component. ts

this.itemRef = db.list('/plats/bigfork/lots');
this.lot$ = this.itemRef.snapshotChanges().map(actions => {
    return actions.map(action => ({
        key: action.payload.key,
        ...action.payload.val() 
    }));
});

База данных Firebase

{
"key": "bigfork",
"bg": "Background URL ",
"cover": "https://",
"description": "The conservation",
"footer": {
  "address": "\t\t",
  "companyName": "Companys",
  "email": "user@email.com",
  "favicon": "https:",
  "phone": "111.1111.111",
  "website": "https://www.facebook.com/#"
},
"header": {
  "logo": "https:",
  "title": "Preserve"
},
"lots": [
  {
    "address": "",
    "alias": "113",
    "area": "",
    "assignedTo": "Available",
  },
  {
    "address": "",
    "alias": "112",
    "area": "",
    "assignedTo": "Available",
  }],

  {
 "key": "cdl",
"bg": "Background URL ",
"cover": "https://",
"description": "The conservation",
"footer": {
  "address": "\t\t",
  "companyName": "Companys",
  "email": "user@email.com",
  "favicon": "https:",
  "phone": "111.1111.111",
  "website": "https://www.facebook.com/#"
},
"header": {
  "logo": "https:",
  "title": "Preserve"
},
"lots": [
  {
    "address": "",
    "alias": "113",
    "area": "",
    "assignedTo": "Available",
  },
  {
    "address": "",
    "alias": "112",
    "area": "",
    "assignedTo": "Available",
  }],

1 Ответ

0 голосов
/ 25 февраля 2020

Вам необходимо использовать запрос:

this.itemRef = db.list('/plats', ref => ref.orderByChild('lots').equalTo('lots'))

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

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