在Angular中创建数据流

问题描述 投票:1回答:1

我有一个使用Observable从数据库中获取数据的服务。它似乎只获取一次数据。当用户将数据添加到数据库然后流式传输到Angular时,我会倾听它。

服务以获取所有数据

getAllProj(): Observable<NouveauProjet[]> {
  return this.http.get<NouveauProjet[]>(
    "http://127.0.0.1:8081/api/proj/projets"
  );
}

服务添加数据

addProj(nouveauProjet: NouveauProjet): Observable<any> {
  return this.http.post<NouveauProjet[]>(
    "http://127.0.0.1:8081/api/proj/projets",
    nouveauProjet
  );
}

当我使用我的服务时,我只订阅它们

getAllProj() {
  this.ajoutProj.getAllProj().subscribe(
    response => {
      console.log("hello"+response);
      this.nouveauProjet=response;
    },
    error => console.log(error)
);

我认为Observable在向DB添加新数据时仍然会监听服务器,但实际情况并非如此,那么如何将我的observable转换为数据流。

angular rxjs observable angular2-observables data-stream
1个回答
2
投票

简短的回答是Websockets。这实际上是服务器端问题。

当数据库更新时,您的API将永远不会“推送”数据,除非您已经告知它这样做,并且最简单的方法是使用Websockets。我将提供一个示例实现,但是有很多变量,特别是如果您正在监视数据库更新并相应地推送信息。

Observable是一个数据流。如果您在服务中为同一API调用设置多个订阅,则从API中提取新数据时,每个订阅都将获得新值。问题是HTTP请求只是源自客户端的“请求”。

© www.soinside.com 2019 - 2024. All rights reserved.