Получить базу данных firebase json

Я пытаюсь получить все данные в базе данных Firebase. Когда я использовал этот код <h1>{{ item | async | json }}</h1> в зависимости от документа объекта angularfire2, я получил список объектов ответа json в html

{
  "type": "value",
  "payload": {
    "8D3sENaBcLaXoGNnh1MPuoyj5LP2": {
      "-LWl294Hs6YjkvJE5pqi": {
        "name": "ddd",
        "title": "dd"
      },
      "-LWlEonKLWfOttzirqp7": {
        "name": "sas",
        "title": "ass"
      },
      "-LWlGvn81Kes2A-1UcC2": {
        "name": "asa",
        "title": "asass"
      },
      "-LWlK92A7gaRkKVrZSFU": {
        "name": "ddd",
        "title": "ddd"
      },
      "-LWla1PYxsIFKhaCXvtu": {
        "name": "ff",
        "title": "fdsf"
      },
      "-LWpfRJP8VdwG927wyXS": {
        "name": "ali",
        "title": "ali"
      },
      "-LWph3ei12KTNyirdnZb": {
        "name": "ddddd",
        "title": "daD"
      }
    },
    "WUM2HBkGo8TFDeOjEqO1s3lCj1p1": {
      "-LWlHlhyS9m3ECS3wIdk": {
        "name": "qwqsasasa",
        "title": "as"
      },
      "-LWlHmXZAJdSPZurO7ii": {
        "name": "qwqsasasa",
        "title": "as"
      },
      "-LWph-fv4JMtTk22aE5X": {
        "name": "sssssssssssssssssssssssss",
        "title": "sssssssssssssssssssssssss"
      }
    }
  },
  "key": "report"
}

Я хочу получить из этого списка json-объект только title и name. Я использовал этот код, но я получил пустую страницу в html, нет данных для отображения!

  <h1>{{ (item | async)?.name }}</h1>
  <h1>{{ (item | async)?.title }}</h1>

основной код

  itemRef: AngularFireObject<any>;
  item: Observable<any>;

      ionViewWillLoad(){
        this.fire.authState.subscribe(data => {
          if (data && data.email && data.uid){
            this.toastCtrl.create({
              message : ` welcome ${data.email}`,
              duration:2000
            }).present()

            this.itemRef = this.db.object('report');
            this.item = this.itemRef.snapshotChanges();

          }

        })

      }
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
209
1

Ответы 1

Ключ /report в вашей базе данных, по-видимому, содержит список объектов: в частности, список отчетов для каждого пользователя, поэтому с двумя вложенными ключами в /report. Но ваш код загружает его как один объект. Это приводит к тому, что этот HTML <h1>{{ (item | async)?.name }}</h1> по существу отображает /report/name, которого нет в вашей базе данных.

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

this.itemRef = this.db.object('report/8D3sENaBcLaXoGNnh1MPuoyj5LP2/-LWl294Hs6YjkvJE5pqi');

Первый подраздел 8D3sENaBcLaXoGNnh1MPuoyj5LP2 здесь — это UID пользователя, чей отчет вы показываете, а -LWl294Hs6YjkvJE5pqi — это первый отчет этого пользователя.

Если вы хотите отображать все отчеты для пользователя, вам нужно будет снова узнать ключ пользователя и передать его в базу данных. Но так как вы затем получите список отчетов, вам также потребуется использовать службу list от AngularFire и перебрать результаты в вашем HTML-шаблоне, чтобы он генерировал элементы для каждого отчета:

this.reports = this.db.list('report/8D3sENaBcLaXoGNnh1MPuoyj5LP2');

И:

<ul>
  <li *ngFor = "let report of reports | async">
     {{ item.title }} - {{ item.name }}
  </li>
</ul>

Если вы хотите отображать вложенный список всех отчетов для всех пользователей, вы должны начать с того же, что и выше, но теперь загрузить данные для всех пользователей и использовать другой ngFor, чтобы сначала перебрать пользователей.

Также см:

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

Ali Ghassan 22.01.2019 15:25

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

Frank van Puffelen 22.01.2019 15:27

прямо сейчас я потратил 10 дней на эту проблему, и все попытки потерпели неудачу

Ali Ghassan 22.01.2019 15:28

Другие вопросы по теме