首页 > 解决方案 > 将 Promise (onSnapShot Firebase-Angular) 转换为订阅 (onSnapShot Firebase-Angular)

问题描述

我想将我在服务文件中的这个 Promise 转换为订阅,并且能够从其他地方调用它,并让它在数据发生变化时返回值。

_services.ts

  update(): Promise<any> {
    return new Promise((resolve, reject) => {
      this._subscription = onSnapshot(doc(this._fireStore, 'Core/App/general', 'mantenimiento'), (document) => {
        const data = document.data();
        let active = false;
        if (data.active) {
          activo = true;
        }
        resolve(active);
      });
    });
  };

从理论上讲,它可以部分采用这种形式:

mantenimiento(): Observable<any> {
    this._subscription = onSnapshot(doc(this._fireStore, 'Core/App/general', 'mantenimiento'), (documento) => {
        const data = documento.data();
        if (data.activo) {
            return true;
        } else {
            return false;
        }
    });
}

不幸的是,它不返回数据。如果我把这个函数放在我调用它的地方,它就可以正常工作。问题是我想将此函数传递给服务文件。

先感谢您

标签: angulartypescriptfirebasegoogle-cloud-firestore

解决方案


推荐阅读