Javascript 具有角度观测值的Nativescript firebase

Javascript 具有角度观测值的Nativescript firebase,javascript,angular,firebase,nativescript,nativescript-angular,Javascript,Angular,Firebase,Nativescript,Nativescript Angular,遇到以下问题时,我正试图获取Firebase数据库的一些数据: 从第一条路径获取数据(例如:userData/tags)都可以完美地工作, 但是,当我调用另一个函数从第二个路径(例如:userData/tasks)获取数据时,什么都不起作用,在我的控制台中没有任何错误,也没有记录侦听器。我以为这是我的代码错误或firebase问题,但后来我发现了一个有趣的故事 我使用这段代码从数据库中获取数据,并将其放在服务类中 @Injectable() export class Data

遇到以下问题时,我正试图获取Firebase数据库的一些数据: 从第一条路径获取数据(例如:userData/tags)都可以完美地工作, 但是,当我调用另一个函数从第二个路径(例如:userData/tasks)获取数据时,什么都不起作用,在我的控制台中没有任何错误,也没有记录侦听器。我以为这是我的代码错误或firebase问题,但后来我发现了一个有趣的故事

我使用这段代码从数据库中获取数据,并将其放在服务类中

  @Injectable()
        export class Database{
        private allData: any;
        constructor(){}
            public getList(path: string): Observable<any> {
                  return new Observable((observer: any) => {
                  let onValueEvent = (snapshot: any) => {
                    this.ngZone.run(() => {
                      let results = this.handleSnapshot(snapshot.value);
                      console.dir(results);
                      observer.next(results);
                    });
                  };
                  firebase.addValueEventListener(onValueEvent, `/${path}`).then((msg)=>{console.dir(msg)}).catch((error)=>{console.error(error);});
                }).share();
              }

        private handleSnapshot(data: any) {
        //empty array, then refill and filter
        this.allData = [];
        if (data) {
          for (let key in data) {
            let result = (<any>Object).assign({ key: key }, data[key]);
            this.allData.push(result);
          }
        }
        return this.allData;
      }
        }
page.html(仅A)


顺便说一下,在查询数据库时也会发生这种情况


我不能说这是否与Nativescript、Firebase、Angular有关,或者只是我的架构中的一个错误。最糟糕的是混合了后端和前端,通常是两个不同的开发人员构建这两个部分。

这真的很奇怪:我刚刚发现这与后端无关,而只与前端有关。在第一个示例中,我在UI中显示数据,在第二个示例中,我仅使用“console.dir()”进行了检查,没有显示任何内容。您是如何发现的?@PatNeedham我用更多细节更新了问题。为什么不使用angularfire2@Rodrigo Medeiros,因为angularfire2更多用于web开发,不具备离线数据、远程配置等本地应用程序的功能。检查EddyVerbruggen的插件:
export class Page{
    public data$;
    constructor(db: Database){
      this.data$ = this.db.getList();
    }
  }
 <ListView [items]="data$ | async">
    <ng-template let-item="item">
        <StackLayout>
        <Label [text]='item.title'></Label>
        </StackLayout>
    </ng-template>
</ListView>