从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的情况下,直到数据被检索。啊,好的,我理解,我会尝试,非常感谢你。