AngularFire2: Realizar 'Uniones' en FirebaseListObservables usando RxJS .map ()

Como se indicó en otra pregunta, estoy desarrollando una aplicación Ionic 2 usando Firebase como backend.

Tengo categorías y tengo productos. Los productos pertenecen a categorías. Como se trata de una relación "n am", los productos y categorías se almacenan en nodos separados en firebase. Estructuré los datos de la siguiente manera:

Estructura de datos de Firebase:

Las categorías saben a qué productos pertenecen (las claves están referenciadas en el nodo "productos" de cada categoría). Los productos saben a qué categorías pertenecen (las claves están referenciadas en el nodo "prod_cat"). Sin embargo, cuando enumero todas las categorías solo conozco los ID de los productos que pertenecen a la categoría. En la plantilla necesito mostrar más detalles, como el nombre del producto, por ejemplo.

Leí muchas preguntas similares y se me ocurrió esta solución para agregar la información del producto a las categorías:

getProductsOfCategory(catId){
  this.productsOfCategory = this.af.database.list('/categories/'+catId+'/prods');

  return this.productsOfCategory
    .map(products => { 
      console.log(products); // works fine: an object containing the relevant product information is logged to the console (see screenshot)
      products.map( product => { console.log(product.$key); // works fine: the IDs of the products are logged to the console 
        product.prod_details = this.af.database.object('/products/'+product.$key); // seems not to work. Returned value: undefined
      });
    });

Lamentablemente, esto no funciona. Como está escrito como comentarios en el código, la información del producto se recopila correctamente y se registra en la consola (consulte la siguiente captura de pantalla):captura de pantalla de la consola

Sin embargo, el objeto devuelto de la función anterior es "indefinido".

Cuando intento indicar que se debe devolver explícitamente un objeto de tipo FirebaseListObservable, recibo el error:

El tipo 'Observable' no es asignable para escribir 'FirebaseListObservable'. Falta la propiedad '$ ref' en el tipo 'Observable'.

¿Alguien tiene una idea de qué más podría probar?

¡Muchas gracias por adelantado!

Respuestas a la pregunta(1)

Su respuesta a la pregunta