我需要从Firestore集合中获取数组而不是对象

时间:2019-06-24 14:10:45

标签: angular google-cloud-firestore angular-material2

我开始将Angular材质与cloud-firestore一起使用,并且数据源和表的数据源存在以下问题。问题是,到firestore的查询返回的对象带有索引,而MatTableDataSource需要一个数组,而我无法将返回查询的对象转换为数组。 我曾尝试使用循环和.map运算符来填充一个空数组,但我总是创建带有索引的对象数组,而不是简单的对象数组。

这是我的数据库:

Collection that I'm querying

我的服务:

findpagosCliente(pagosId: number[]) {
    const col = this.afs.collection<Cliente>('pagoscliente')
    const queries = pagosId.map(el => col.doc(el.toString()).valueChanges());
    return combineLatest(...queries);    
}

我的组件

inicializarTablaPagos() {
this.clienteService.findpagosCliente(this.clienteSeleccionado.facturacion.pagos).subscribe((pagos) => {   
      this.dataSource = new MatTableDataSource(pagos); 
      this.dataSource.paginator = this.paginator;
      this.showClientData = true;
    })
}

MatTableDataSource等待一个数组,但是angularfire2查询将我和对象发送回去,如下所示: object from firestore

我已经尝试了很多循环和运算符来尝试创建一个新的简单数组,但是最终它们都生成了一个新数组,就像上一张图​​中的那样。例如:

this.clienteService.findpagosCliente(this.clienteSeleccionado.facturacion.pagos)
      .subscribe((pagos) => {   
        let arraytemp = [];     
        pagos.map(element => {
          arraytemp.push(element)
        })
        this.dataSource = new MatTableDataSource(arraytemp); 
        this.dataSource.paginator = this.paginator;
        this.showClientData = true;
      })

我知道我做错了,这很明显,但是现在我看不到。

谢谢您的回答

1 个答案:

答案 0 :(得分:0)

您得到的结果已经是一个数组。只需查看图像中的符号即可:[{...}, {...}] 方括号始终是数组的指示符。