Angular и Firebase - Автоматическое восстановление базы данных - PullRequest
0 голосов
/ 10 марта 2019

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

Мой сервис для загрузки скрипта:

import { HttpClient } from "@angular/common/http";
import { Injectable } from "@angular/core";

@Injectable()
export class CoursService {
  liste_cours = []

  constructor(private httpClient: HttpClient) {
    this.getCoursFromServer()
  }

  saveCoursToServer() {
    this.httpClient
      .put("https://databaselink/cours.json", this.liste_cours)
      .subscribe(
        () => {
          console.log("Enregistrement terminé!");
        },
        error => {
          console.log("Erreiorr ! : " + error);
        }
      );
  }

  getCoursFromServer() {
    this.httpClient
      .get<any[]>("https://databaselink/cours.json")
      .subscribe(
        response => {
          this.liste_cours = response;
          console.log("Loading finish");
        },
        error => {
          console.log("Error!: " + error);
        }
      );
  }
}

Спасибо за ваши ответы!

1 Ответ

0 голосов
/ 10 марта 2019

Похоже, что вы обращаетесь к базе данных Firebase Realtime, отправляя к ней HTTP-запросы. Это означает, что вы получаете текущие данные при выполнении HTTP-вызова, но не получаете обновлений данных после этого. Когда вы перезагрузите страницу, вы снова получите последние данные.

Существует несколько способов автоматического обновления страницы при изменении данных, не требуя от пользователя перезагрузки страницы.

  1. Используйте Firebase SDK. Это, безусловно, самый простой подход, поскольку Firebase имеет SDK как для простых JavaScript , так и для Angular приложений. Когда вы интегрируете эти SDK, вы можете получать обновления в реальном времени, подключив on('value' слушатель или подписавшись на узел .
  2. Периодически выполняйте HTTP-запрос на вашей странице, который известен как опрос данных. Это тоже довольно простой подход, но он становится очень неэффективным, если ваши данные меняются не часто.
  3. Реализация клиента для потокового REST API Firebase. Это довольно сложно и обычно выполняется только на платформах, где нет Firebase SDK, или энтузиастами, которые хотят больше узнать о протоколе.

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

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