AngularFire2: Execute 'Junções' no FirebaseListObservables usando RxJS .map ()

Como mencionado em outra pergunta, estou desenvolvendo um aplicativo Ionic 2 usando o Firebase como back-end.

Eu tenho categorias e tenho produtos. Os produtos pertencem a categorias. Como é um relacionamento "n para m", produtos e categorias são armazenados em nós separados no firebase. Estruturei os dados da seguinte maneira:

Estrutura de dados do Firebase:

As categorias sabem quais produtos pertencem a elas (as chaves são referenciadas no nó "prods" de cada categoria). Os produtos sabem a que categorias eles pertencem (as chaves são referenciadas no nó "prod_cat"). No entanto, quando listo todas as categorias, apenas conheço os IDs dos produtos que pertencem à categoria. No modelo, preciso mostrar mais detalhes, como o nome do produto, por exemplo.

Li muitas perguntas semelhantes e criei esta solução para adicionar as informações do produto às categorias:

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
      });
    });

Infelizmente, isso não funciona. Conforme escrito como comentários no código, as informações do produto são coletadas corretamente e registradas no console (consulte a captura de tela a seguir):captura de tela do console

No entanto, o objeto retornado da função acima é "indefinido".

Quando tento declarar que explicitamente um objeto do tipo FirebaseListObservable deve ser retornado, recebo o erro:

O tipo 'Observable' não pode ser atribuído ao tipo 'FirebaseListObservable'. A propriedade '$ ref' está ausente no tipo 'Observable'.

Alguém tem uma idéia do que mais eu poderia tentar?

Muito obrigado antecipadamente!

questionAnswers(1)

yourAnswerToTheQuestion