Получайте только «неопределенные» результаты из Firebase Realtime Storage - PullRequest
0 голосов
/ 15 мая 2019

Я получаю неопределенный результат только в моем хранилище в режиме реального времени, но добавление работает нормально.Почему они не определены?

Вот так выглядит мое хранилище Firebase:

storage
   |
    -- Objects
          |
           --0
             |
              --Address
             |     |
             |     --City : "Wedel"
             |     |
             |     -- Number: 123
             |     |
             |     -- Street: "Musterstraße"
             |     |
             |     -- ZipCode: 22880
             |
              -- CompanyName: "MusterArchitekt"
             |
              -- CostumerGroup: "Planer"
             |
              -- Fax: "04055675369"
             |
              -- Person
                    |
                     -- 0
                        |
                        -- FirstName: "Max"
         ...........

И т. Д.

Мой код Angular7 напрямую копируется для тестирования из GitПример:

 import { Component, OnInit } from '@angular/core';
import { AngularFireDatabase, AngularFireList } from '@angular/fire/database';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

@Component({

  selector: 'app-apitest',
  template:  `
  <ul>
    <li *ngFor="let item of items | async">
      <input type="text" #updatetext [value]="item.text" />
      <button (click)="updateItem(item.key, updatetext.value)">Update</button>
      <button (click)="deleteItem(item.key)">Delete</button>
    </li>
  </ul>
  <input type="text" #newitem />
  <button (click)="addItem(newitem.value)">Add</button>
  <button (click)="deleteEverything()">Delete All</button>
  `,
  styleUrls: ['./apitest.component.css']
})
export class ApitestComponent implements OnInit {
  itemsRef: AngularFireList<any>;
  items: Observable<any[]>;
  constructor(db: AngularFireDatabase) {
    this.itemsRef = db.list('Objects/0/Address');
    // Use snapshotChanges().map() to store the key
    this.items = this.itemsRef.snapshotChanges().pipe(
      map(changes => 
        changes.map(c => ({ key: c.payload.key, ...c.payload.val() }))
      )
    );
  }
  addItem(newName: string) {
    this.itemsRef.push({ text: newName });
  }
  updateItem(key: string, newText: string) {
    this.itemsRef.update(key, { text: newText });
  }
  deleteItem(key: string) {
    this.itemsRef.remove(key);
  }
  deleteEverything() {
    this.itemsRef.remove();
  }
  ngOnInit() {
  }

}

Каждый раз, когда я пытаюсь получить доступ, например, к this.db.list ('Objects / 0 / Address'), я получаю только 4 неопределенных значения.Вместо Города: "Wedel", Номер: 123 и т. Д.

Я бы хотел, чтобы Массив Всего Объектов делал такие вещи:

items = this.db.list("Objects");
city = items[0].Address.City; 

Кто-нибудь знает, кому это делать?в Angular7?

РЕДАКТИРОВАТЬ:

Кроме того, когда я вызываю this.items.forEach (e => console.log (e));Я понял.

(4) [{…}, {…}, {…}, {…}]
0: {0: "W", 1: "e", 2: "d", 3: "e", 4: "l", key: "City"}
1: {key: "Number"}
2: {0: "M", 1: "u", 2: "s", 3: "t", 4: "e", 5: "r", 6: "s", 7: "t", 8: "r", 9: "a", 10: "ß", 11: "e", key: "Street"}
3: {key: "ZipCode"}
length: 4
__proto__: Array(0)

Это не очень помогает мне, но лучше, чем неопределенное ...

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