【问题标题】:How to subscribe from Angular to a NestJs Observable?如何从 Angular 订阅 NestJs Observable?
【发布时间】:2019-08-16 08:14:53
【问题描述】:

我正在使用 Firestore 中的数据库在 Angular 7 中执行应用程序,但为了避免使用云功能,我决定使用 NestJs (5) 作为后端,并使用 firebase-admin 事务来保持嵌入式数据同步。当我进行咨询时,一切似乎都运行良好,我的 nestjs 后端负责收集并加入它们以响应我的前端应用程序。但这是我真正的问题:我必须做些什么才能让我在nestjs 中的后端返回一个可观察到的角度前端?

我想要实现的是我的前端通过我在 NestJs 中的后端实时检测到 Firestore 的变化。

简介 我正在使用 Firestore 中的数据库在 Angular 7 中做一个应用程序,但为了避免云功能,我决定使用 NestJs (5) 作为后端,并使用 firebase-admin 事务来保持嵌入式数据同步。当我进行咨询时,一切似乎都运行良好,我的 nestjs 后端负责收集并加入它们以响应我的前端应用程序。但这是我真正的问题:我必须做些什么才能让我在nestjs 中的后端返回一个可观察到的角度前端?

我想要实现的是我的前端通过我在 NestJs 中的后端实时检测到 Firestore 的变化。

我知道从 NestJs 我们可以作为 observable 的结果返回,以便您从 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 的变化。

但是我该怎么做呢?

【问题讨论】:

    标签: angular google-cloud-firestore observable subscribe nestjs


    【解决方案1】:

    要实现您想做的事情,您需要 NestJs 中包含的 @nestjs/websockets 包和 Angular 中的 ngx-socket-io 包。

    这样,您可以订阅当有人连接到生成 NestJ 并通过该方法发送它们的 @WebSocketServer () server 时您的 firestore 数据库发出的更改

    client.broadcast.emit ('change', changes);
    

    只有从角度订阅事件更改:

    this.socket.fromEvent ('change'). subscribe ((changes) => console.log (changes));
    

    就是这样;),当连接到该套接字的用户为 0 时,建议取消订阅 firestore 数据库中的更改。

    【讨论】:

    • 非常感谢@Ing Alejandro Villalón,您的回复标志着要采取的方式,因为我真的不知道该怎么做。我需要的正是这些概念。
    猜你喜欢
    • 1970-01-01
    • 2017-11-30
    • 2018-07-13
    • 2018-09-08
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    • 2017-03-26
    • 2013-12-03
    相关资源
    最近更新 更多