如何从 Angular 订阅 NestJs Observable?
How to subscribe from Angular to a NestJs Observable?
我正在 angular 7 中使用 Firestore 中的数据库做一个应用程序,但是为了避免云功能,我决定使用 NestJs (5) 作为后端,并且我使用 firebase-admin 事务来保持嵌入式数据同步。当我进行咨询时,一切似乎都运行良好,我的 nestjs 后端负责收集并加入它们以响应我在 angular 中的前端应用程序。但这是我真正的问题:我必须做些什么才能使我在 nestjs return 中的后端成为 angular 前端的可观察对象?
我想实现的是我的前端通过我的后端在NestJs中实时检测到firestore的变化。
简介 我正在 angular 7 中使用 Firestore 中的数据库做一个应用程序,但为了避免云功能,我决定使用 NestJs (5) 作为后端,并且我使用 firebase-admin 事务来保持嵌入式数据同步。当我进行咨询时,一切似乎都运行良好,我的 nestjs 后端负责收集并加入它们以响应我在 angular 中的前端应用程序。但这是我真正的问题:我必须做些什么才能使我在 nestjs return 中的后端成为 angular 前端的可观察对象?
我想实现的是我的前端通过我的后端在NestJs中实时检测到firestore的变化。
我了解到,通过 NestJs,我们可以 return 作为可观察结果,因此您可以从 angular 实时订阅更改。
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的变化。
但是我该怎么做呢?
要实现你想做的事情,你需要NestJs中包含的@nestjs/websockets
包和Angular中的ngx-socket-io
包。
有了它,您可以订阅当有人连接到生成 NestJs 并通过方法
发送它们的 @WebSocketServer () server
时,您的 firestore 数据库发出的更改
client.broadcast.emit ('change', changes);
从 angular 开始,只有您订阅了事件更改:
this.socket.fromEvent ('change'). subscribe ((changes) => console.log (changes));
就是这样;),建议当连接到该套接字的用户为 0 时,取消订阅 firestore 数据库中的更改。
我正在 angular 7 中使用 Firestore 中的数据库做一个应用程序,但是为了避免云功能,我决定使用 NestJs (5) 作为后端,并且我使用 firebase-admin 事务来保持嵌入式数据同步。当我进行咨询时,一切似乎都运行良好,我的 nestjs 后端负责收集并加入它们以响应我在 angular 中的前端应用程序。但这是我真正的问题:我必须做些什么才能使我在 nestjs return 中的后端成为 angular 前端的可观察对象?
我想实现的是我的前端通过我的后端在NestJs中实时检测到firestore的变化。
简介 我正在 angular 7 中使用 Firestore 中的数据库做一个应用程序,但为了避免云功能,我决定使用 NestJs (5) 作为后端,并且我使用 firebase-admin 事务来保持嵌入式数据同步。当我进行咨询时,一切似乎都运行良好,我的 nestjs 后端负责收集并加入它们以响应我在 angular 中的前端应用程序。但这是我真正的问题:我必须做些什么才能使我在 nestjs return 中的后端成为 angular 前端的可观察对象?
我想实现的是我的前端通过我的后端在NestJs中实时检测到firestore的变化。
我了解到,通过 NestJs,我们可以 return 作为可观察结果,因此您可以从 angular 实时订阅更改。
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的变化。
但是我该怎么做呢?
要实现你想做的事情,你需要NestJs中包含的@nestjs/websockets
包和Angular中的ngx-socket-io
包。
有了它,您可以订阅当有人连接到生成 NestJs 并通过方法
发送它们的@WebSocketServer () server
时,您的 firestore 数据库发出的更改
client.broadcast.emit ('change', changes);
从 angular 开始,只有您订阅了事件更改:
this.socket.fromEvent ('change'). subscribe ((changes) => console.log (changes));
就是这样;),建议当连接到该套接字的用户为 0 时,取消订阅 firestore 数据库中的更改。