我正在用Firestore中的数据库在angular 7中开发一个应用程序,但是为了避免云功能,我决定使用NestJs(5)进行后端,并且使用firebase-admin事务来保持嵌入式数据同步。当我进行咨询时,一切似乎都工作正常,我的nestjs后端负责收集并加入它们,以对我的前端应用程序进行响应。但是,这是我真正的问题:我该怎么做才能使我在nestjs中的后端返回一个可观察到的有角度的前端?
我想实现的目标是,我的前台可以通过我的NestJs后端实时检测Firestore的变化。
引言我正在用角度7在Firestore中使用数据库做一个应用程序,但是为了避免云功能,我决定使用NestJs(5)进行后端,并且使用firebase-admin事务来保持嵌入式数据同步。当我进行咨询时,一切似乎都工作正常,我的nestjs后端负责收集并加入它们,以对我的前端应用程序进行响应。但是,这是我真正的问题:我该怎么做才能使我在nestjs中的后端返回一个可观察到的有角度的前端?
我想实现的目标是,我的前台可以通过我的NestJs后端实时检测Firestore的变化。
我了解到,通过NestJs,我们可以返回可观察到的结果,因此您可以从角度实时订阅更改。
Firestore-> Nestjs(在Firebase函数中运行)-> Angular(.subscribe)
NestJs中的当前功能:
async getAllAdministratorsForFirestore(): Promise<Administrator[]> {
const administratorsSnapshot = await administratorsRef.get();
const administrators = [];
administratorsSnapshot.forEach(doc => {
administrators.push(mapFirestoreDocs(doc.id, doc.data()));
});
return administrators;
}
当前Angular用户:
subscribeToAdministratorsForNestJs() {
this.http.get(nestJsEndPointUrl, options).subscribe((administrators) => {
this.administrators = administrators;
})
}
我想实现的目标是,我的前台可以通过我的NestJs后端实时检测Firestore的变化。
但是我该怎么做?
答案 0 :(得分:1)
要实现所需的功能,您需要NestJs中包含的@nestjs/websockets
软件包和Angular中的ngx-socket-io
软件包。
有了它,您可以订阅当有人连接到生成NestJs并通过方法发送它们的@WebSocketServer () server
时,firestore数据库发出的更改。
client.broadcast.emit ('change', changes);
并且只有您订阅了事件更改:
this.socket.fromEvent ('change'). subscribe ((changes) => console.log (changes));
就这样;),当连接到该套接字的用户为0时,建议取消订阅Firestore数据库中的更改。