首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按Firebase状态获取订单

按Firebase状态获取订单
EN

Stack Overflow用户
提问于 2017-12-23 05:52:37
回答 1查看 58关注 0票数 0

使用React和Firebase进行商务

我需要获取状态为'on-hold‘的所有订单,因此我执行了以下操作:

JS

代码语言:javascript
复制
    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数据库如下所示:

代码语言:javascript
复制
orders: {
  ...
  id: {
    ...
    status: {
      ...
      state: 'on-hold'
    }
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-23 06:43:57

您将希望使用一个查询(仅获取处于暂挂状态的订单)和一个value侦听器(以确保在没有处于暂挂状态的订单时也会调用)。

代码语言:javascript
复制
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});
})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47947785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档