从 FirebaseListObservable 中提取数据到数组

Extract data from FirebaseListObservable to Array

抱歉我的英语不好,我有这个观察结果:

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

您只需

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 它即可创建其他可观察对象,就像我们在上面所做的那样,以创建键数组的可观察对象,或订阅它以获取基础数据。