Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Angular中创建数据流_Angular_Rxjs_Observable_Angular2 Observables_Data Stream - Fatal编程技术网

在Angular中创建数据流

在Angular中创建数据流,angular,rxjs,observable,angular2-observables,data-stream,Angular,Rxjs,Observable,Angular2 Observables,Data Stream,我有一个使用Observable从数据库获取数据的服务。似乎它只获得一次数据。我希望它在用户将数据添加到数据库中,然后流到数据库中时进行监听 获取所有数据的服务 getAllProj(): Observable<NouveauProjet[]> { return this.http.get<NouveauProjet[]>( "http://127.0.0.1:8081/api/proj/projets" ); } 我认为在数据库中添加新数据时,Obse

我有一个使用Observable从数据库获取数据的服务。似乎它只获得一次数据。我希望它在用户将数据添加到数据库中,然后流到数据库中时进行监听

获取所有数据的服务

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

我认为在数据库中添加新数据时,Observable仍会侦听服务器,但事实并非如此,因此如何将Observable转换为数据流。

简单的答案是
WebSocket
。这实际上是一个服务器端问题

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


可观测数据是一个数据流。如果在服务中为同一API调用设置多个订阅,则从API中提取新数据时,每个订阅都将获得新值。问题是HTTP请求只是来自客户端的“请求”;我想了解一个演示如何使用ExpressJS和MongoDB数据库流式传输数据的示例。例如,用户添加数据,然后使用get Method自动将其发送到客户端。坦白说,您找不到数据。Express是一个restapi,意味着它只响应请求。查看Socket.IO。您需要在能够推送数据的服务器上订阅开放式套接字。您最好的选择是使用Express(响应需要大量中间件的请求)和socket.io作为“新信息”广播服务器的双向实现。WebSocket有很多安全问题,所以请尽你的职责,确保不广播敏感数据。我应该为客户端实现Socket.io吗?或者在调用时只在服务器端在
post
api中生成一个套接字
emit
,在
get
api中在
socket上生成一个套接字?您能给我更多的信息来说明如何做吗?
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)
);