Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

438
Views
Cómo aplanar una matriz de observables en un observable

Estoy tratando de aplanar un Observable anidado, pero no consigo que funcione:

 this.af.object('test/father') .map(res => { res.namedKeys = []; for (let el in res.keys) { res.namedKeys.push(this.af.object(`test/keys/${el}`)) } return res }) .flatMap(res => Observable.combineLatest(res)) .subscribe(res => { console.log('The final response:', res); });

Quiero obtener los datos reales de los Observables en mi matriz. Probé muchas cosas diferentes en los últimos 2 días, pero al final, no recibo nada o sigo recibiendo el Array con Observables. El código anterior no devuelve nada.

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Es bastante difícil ver cuál es el problema, ya que no proporciona ninguna información de estructura.

Creo que quieres decir:

 for (let el in Object.keys(res))

en vez de

 for (let el in res.keys)

Además, combineLatest espera un observable. no proporcionaste uno:

Considere usar esto en su lugar:

 .flatMap(res => Rx.Observable.combineLatest(Rx.Observable.of(res)))

Demostración (que usa rxjs 5 que usa switchmap en lugar de flatMap)
http://jsbin.com/cuvisecipi/1/edit?html,js,consola,salida

Una mejor demostración que ilustra una solución similar (de una matriz):

http://jsbin.com/punoxitino/1/edit?html,js,consola,salida

over 4 years ago · Santiago Trujillo Report

0

El operador .combineLatest funcionaría pero espera una matriz de Observables. Le está pasando un objeto res que contiene una propiedad con una matriz de Observables.

En otras palabras, .combineLatest necesita esto: Observable[]
Pero lo estás pasando: { namedKeys: Observable[] }

Entonces, su problema no es simplemente aplanar los Observables (como este, por ejemplo, combinar múltiples matrices observables en una nueva matriz de objetos ) porque también necesita pasar los objetos originales. Recomiendo usar forkJoin porque recopila todos los elementos de todos los Observables de origen hasta que se completan.

 this.af.object('test/father') .concatMap(res => { // the original object is here as well at index 0 observables = [ Observable.of(res) ]; for (let el in res.keys) { observables.push(this.af.object(`test/keys/${el}`)) } return Observable.forkJoin(observables); }) .map(([res, ...namedKeys]) => { res.namedKeys = namedKeys; return res; }) .subscribe(res => { ... });
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!