在Angular中创建数据流
我有一个使用Observable从数据库获取数据的服务。似乎它只获得一次数据。我希望它在用户将数据添加到数据库中,然后流到数据库中时进行监听 获取所有数据的服务在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
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)
);