我正在使用Ionic和Firebase,我正面临链接数据的几个问题,无论是操作还是打印。我已阅读文章并观看了几个版本之间不同方法的视频但尚未解决,我必须认识到现在我有一个可怕的混乱(我当然是初学者)。让我解释一下更多细节:
版本:
“angularfire2”:“^ 5.0.0-rc.6”
“firebase”:“^ 4.10.1”
“ionic-angular”:“3.9.2”,
Firebase结构示例:
我需要打印:
现在我可以使用a检索和打印订单列表,当然“user”字段显示为“-L5uzsn0C4-FYiS7HiY”,但我需要显示的是用户“Carlos”的名称
途径:
首先,我尝试显示嵌套的* ngFor,类似于:
...但是,即使没有该订单的用户,也不会像打印一样正确显示。
之后尝试打印函数getUserName(order.payload.val().user)
,但似乎无法在那里调用/打印函数...
之后我调查了是否有办法用“JOINS”向firebase抛出查询,就像在SQL数据库中一样。观看了几个视频但没有找到解决方案。例如,在this官方视频中,他们使用db.child
,但此功能似乎不可用,我认为是版本问题......
对于最后一次尝试,我认为最好的方法是通过代码检索订单列表,然后使用list.user检索用户对象并在打印前将其推送到列表,但这非常困难。但我甚至无法操纵检索到的清单的数据!!
我检索订单清单:
ordersList: any;
this.ordersList = this.afd.list('/orders/2018/03-marzo/').snapshotChanges();
此时ordersList
使用*ngFor
正确打印,但我想按代码访问键和值。我观看了Ionic3的this视频和使用.map
的angularfire5(见分钟2:02),我正在使用此代码,但它无效,无法检索错误但没有打印任何内容
this.ordersList$ = this.afd.list('/orders/2018/03-marzo/')
.snapshotChanges() //Key and value (valueChanges only value)
.map(
changes => {
console.log(changes.map(c => ({
key: c.payload.key,
...c.payload.val(),
})));
});
提前致谢。
相关问题 相关问题似乎是针对以前的angularfire版本开发的,因为我无法使用所示的“.map”函数 Displaying nested data from firebase to ionic
答案 0 :(得分:0)
我对这个问题有一个答案,尽管引发了另一个问题。
以下是操作firebase列表数据所需的代码,执行您想要的操作并将其加载到数组中:
this.afd.list('/orders/2018/03-marzo/')
.snapshotChanges()
.subscribe( res =>
res.map(action => {
//another query to firebase to retrieve the name of the user with id = action.payload.val().repartidor
orders.push({key: action.key,
tienda: action.payload.val().tienda,
cajas: action.payload.val().cajas,
repartidor: //name stored previously
})
}),
error => console.log(error));
这就是我在开始时想要的东西,通过这个我能够到达订单的每个领域。
现在我在打印html中的订单时遇到问题,当我更新任何信息时,它们会被打印但重复。无论如何,我想我必须澄清我的DB结构是否是我需要的。