将数据从FirebaseListObservable提取到Array

时间:2017-05-09 20:25:40

标签: firebase ionic-framework firebase-realtime-database ionic2 angularfire2

对不起我的英语,我有这个可观察的:

this.productos = af.database.list('/productos', {
    query: {
      orderByChild: 'categoria',
      equalTo: this.catnombre
    }
    });

我需要从这里提取所有id并设置在一个数组中,但我不知道如何,谢谢。

编辑:

我可以提取id,但我使用de key,现在我需要提取其他数据,但是snapshot.val,不行。

  this.productos = af.database.list('/productos/', {
    query: {
      orderByChild: 'categoria',
      equalTo: this.catnombre
    }, preserveSnapshot:true
    });

    this.productos.subscribe(snapshot => {

         snapshot.forEach(snapshot => {

           console.log(snapshot.key);
           this.idproductos.push(snapshot.key); 

         });
         console.log(this.idproductos);
    });

1 个答案:

答案 0 :(得分:2)

您需要做的就是

this.productos = af.database.list('/productos/', {
    query: {
      orderByChild: 'categoria',
      equalTo: this.catnombre
    })
  .map(products => products.map(product => product.$key));

结果将是一个可观察的键数组。现在您可以订阅或做任何您想做的事情。

this.productos.subscribe(keys => console.log("keys are", keys));

如果正确使用了AngularFire和FirebaseListObservable之类的内容,您就不必担心快照,或者对其进行val()forEach,或者将元素放到你自己的数组上。 FirebaseListObservable是一个可观察的数组。简单地map创建其他可观察对象,就像我们上面创建的一个可观察的键数组,或者订阅它以获取基础数据。