Мне нужно получить массив вместо объекта из коллекции Firestore - PullRequest
0 голосов
/ 24 июня 2019

Я начинаю использовать материал Angular с облачным пожарным хранилищем, и у меня возникает следующая проблема с источником данных и источником данных для таблицы.Проблема в том, что запрос к firestore возвращает объект с индексами, а MatTableDataSource нужен массив, и я не могу преобразовать объект, который возвращает запрос, в массив.Я пытался использовать циклы и оператор .map для заполнения пустого массива, но я всегда создаю массив объектов с индексом, а не простой массив объектов.

это моя база данных:

Коллекция, которую я запрашиваю

Мой сервис:

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 отправляет меня обратно и объект выглядит так: объект из 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 голосов
/ 24 июня 2019

Полученный результат уже является массивом.Просто посмотрите на обозначения на вашем изображении: [{...}, {...}] Квадратные скобки всегда являются индикатором для массива.

...