Angular和Firebase-自动数据库恢复

时间:2019-03-10 14:00:22

标签: angular database typescript firebase reload

我尝试创建一个网站,为我的学校作业提供文字课程。我已经完成了身份验证和课程备份。现在,我尝试创建实时聊天。但是,当我更改数据库时,有必要重新加载网站以进行更改。不重新加载怎么办?

我的加载脚本服务:

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 :(得分:0)

您似乎正在通过向其发出HTTP请求来访问Firebase实时数据库。这意味着您在进行HTTP调用时会获得当前数据,但此后将不会收到数据的更新。重新加载页面后,您将再次获得最新数据。

有几种方法可以使您的页面在数据更改时自动更新,而无需用户重新加载页面。

  1. 使用Firebase SDK。到目前为止,这是最简单的方法,因为Firebase拥有适用于普通JavaScriptAngular应用程序的SDK。集成这些SDK时,您可以通过attaching an on('value' listenersubscribing to the node获得实时更新。
  2. 定期在您的页面中执行HTTP请求,这称为轮询数据。这也是一种非常简单的方法,但是如果您的数据不经常更改,则效率会非常低。
  3. 为Firebase的流式REST API实施客户端。这非常复杂,通常只能在没有Firebase SDK的平台上完成,或者只能由想进一步了解该协议的发烧友完成。

我强烈建议您按照给出的顺序考虑这些解决方案。