Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从FirebaseListObservable提取数据到阵列_Firebase_Ionic Framework_Firebase Realtime Database_Ionic2_Angularfire2 - Fatal编程技术网

从FirebaseListObservable提取数据到阵列

从FirebaseListObservable提取数据到阵列,firebase,ionic-framework,firebase-realtime-database,ionic2,angularfire2,Firebase,Ionic Framework,Firebase Realtime Database,Ionic2,Angularfire2,对不起,我的英语,我有一个明显的问题: this.productos = af.database.list('/productos', { query: { orderByChild: 'categoria', equalTo: this.catnombre } }); 我需要从这里提取所有id并设置为一个数组,但我不知道如何设置,谢谢 编辑: 我可以提取id,但我使用de键,现在我需要提取其他数据,但snapshot.val不起作用 thi

对不起,我的英语,我有一个明显的问题:

this.productos = af.database.list('/productos', {
    query: {
      orderByChild: 'categoria',
      equalTo: this.catnombre
    }
    });
我需要从这里提取所有id并设置为一个数组,但我不知道如何设置,谢谢

编辑:

我可以提取id,但我使用de键,现在我需要提取其他数据,但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
it创建其他可观察对象,就像我们在上面创建键数组的可观察对象一样,或者订阅它来获取底层数据。

问题是我需要这个数组来进行其他操作,我不知道如何读取可观察对象。我建议阅读或重读一本关于可观察对象的好教程。通过订阅一个可观察对象,然后在传递给
subscribe
的处理程序中处理数据,可以“读取”它。在subscribe处理程序中,你可以做的一件事是将数据的副本存储在某个地方,这很好,只要你记住,在observable开始触发之前,数据是不可用的——在AngularFire的情况下,直到数据被检索。啊,好的,我理解,我会尝试,非常感谢你。