AngularFire2查询未返回文档ID

AngularFire2查询未返回文档ID,angular,firebase,google-cloud-firestore,angularfire2,Angular,Firebase,Google Cloud Firestore,Angularfire2,我在服务中使用AngularFire2从Firestore集合获取数据。代码如下所示: this.db.collection('organizations') .valueChanges() .pipe(first()) .toPromise() .next(organization => console.log(organization)); private getOrganizations(whereClause: any): any { return

我在服务中使用AngularFire2从Firestore集合获取数据。代码如下所示:

this.db.collection('organizations')
  .valueChanges()
  .pipe(first())
  .toPromise()
  .next(organization => console.log(organization));
private getOrganizations(whereClause: any): any {
        return this.db.collection('organizations')
            .snapshotChanges()
            .pipe(
                map((docs: any) => {
                    return docs.map(a => {
                        const data = a.payload.doc.data();
                        const id = a.payload.doc.id;
                        return {id, ...data};
                    });
                })
            );
    }
控制台完全按照预期记录组织对象。但该对象缺少Firestore文档的id


因此,我想知道是否可以做一些事情来获取ID作为查询的一部分…

您可以使用快照,如下所示:

this.db.collection('organizations')
  .valueChanges()
  .pipe(first())
  .toPromise()
  .next(organization => console.log(organization));
private getOrganizations(whereClause: any): any {
        return this.db.collection('organizations')
            .snapshotChanges()
            .pipe(
                map((docs: any) => {
                    return docs.map(a => {
                        const data = a.payload.doc.data();
                        const id = a.payload.doc.id;
                        return {id, ...data};
                    });
                })
            );
    }
有关快照更改的更多详细信息,请检查:

快照更改()

它是什么?-将可观察到的数据作为DocumentChangeAction返回

为什么要使用它?-当您需要文档数据,但也需要 保留元数据。此元数据为您提供了underyling 文档引用和文档id。到处都有文档的id 使数据操作方法的使用更加容易。这种方法给出了 您可以通过其他角度积分(如ngrx)获得更大的马力, “类型”属性导致的窗体和动画。上的类型属性 每个DocumentChangeAction对于ngrx减速器、表单状态、, 和动画状态。它是什么将可观察到的数据作为


您可以使用快照,如下所示:

this.db.collection('organizations')
  .valueChanges()
  .pipe(first())
  .toPromise()
  .next(organization => console.log(organization));
private getOrganizations(whereClause: any): any {
        return this.db.collection('organizations')
            .snapshotChanges()
            .pipe(
                map((docs: any) => {
                    return docs.map(a => {
                        const data = a.payload.doc.data();
                        const id = a.payload.doc.id;
                        return {id, ...data};
                    });
                })
            );
    }
有关快照更改的更多详细信息,请检查:

快照更改()

它是什么?-将可观察到的数据作为DocumentChangeAction返回

为什么要使用它?-当您需要文档数据,但也需要 保留元数据。此元数据为您提供了underyling 文档引用和文档id。到处都有文档的id 使数据操作方法的使用更加容易。这种方法给出了 您可以通过其他角度积分(如ngrx)获得更大的马力, “类型”属性导致的窗体和动画。上的类型属性 每个DocumentChangeAction对于ngrx减速器、表单状态、, 和动画状态。它是什么将可观察到的数据作为


谢谢Nadhir,看起来像是这样!谢谢Nadhir,看起来像是这样!