使用React和Firebase的商务
我需要获得状态为“暂停”的所有订单,因此我执行了以下操作:
JS
const ordersRef = firebase.database().ref('/orders');
let orders = [];
ordersRef.on('child_added', snap => {
if (snap.val().status.state === 'on-hold') {
orders = [
{
...snap.val(),
id: snap.key
},
...orders
];
this.setState({loading:false, orders: orders});
}
})
这是有效的,唯一的问题是,如果没有订单'暂停','加载'状态永远不会改变。
firebase数据库看起来像:
orders: {
...
id: {
...
status: {
...
state: 'on-hold'
}
}
}
答案 0 :(得分:2)
您将需要使用查询(仅获取保留的订单)和value
侦听器(以确保在没有处于暂停状态的订单时也会调用)。
const ordersRef = firebase.database().ref('/orders');
let orders = [];
ordersRef.orderByChild("status/state").equalTo("on-hold").on('value', snapshot => {
orders = [];
snapshot.forEach((snap) => {
orders.push({ ...snap.val(), id: snap.key });
})
this.setState({loading:false, orders: orders});
})