具有Firestore“ get()”的Angular Universal不起作用,但“ valueChanges()”起作用]]

问题描述 投票:0回答:1

我一直在尝试将Angular应用程序制作为从Firebase Firestore获取数据的Angular Universal应用程序。

我一直在遵循以下指南:

https://fireship.io/lessons/angular-universal-firebase/

初始编译和一切正常,即使借助valueChanges()方法从Firestore获取数据也能解决问题。

但是,如果我将valueChanges()更改为get()并在DocumentSnapshot上进行了必要的调整,似乎通用方法不会等待数据被获取并呈现。

模板文件

<div class="desc" *ngIf="(task | async) as ts">
  {{ts.description}}
</div>

工作码

export class Task {

    colRef: AngularFirestoreCollection;

    constructor(private db: AngularFirestore) {
        this.colRef = this.db.collection(this.COL_NAME);
    }

    ngOnInit() {
        this.task = this.colRef.doc(id).valueChanges();
    }
}

无效代码

export class Task {

    colRef: AngularFirestoreCollection;

    constructor(private db: AngularFirestore) {
        this.colRef = this.db.collection(this.COL_NAME);
    }

    ngOnInit() {
        this.task = this.colRef.doc(id).get().pipe(map(docSnapshot => docSnapshot.data()));
    }
}

我一直在尝试将Angular应用程序制作为从Firebase Firestore获取数据的Angular Universal应用程序。我一直在遵循以下指南:https://fireship.io/lessons / ...

firebase google-cloud-firestore angularfire2 angular-universal
1个回答
0
投票

valuechanges()是包angularFire内的方法,它返回Observable,而get()方法位于firestore包内,并返回Promise。因此,不能将pipeget()结合使用>

Angularfire:

© www.soinside.com 2019 - 2024. All rights reserved.