javascript - 按状态获取订单 Firebase

标签 javascript reactjs firebase firebase-realtime-database

使用 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'
    }
  }
}

最佳答案

您需要使用查询(仅获取处于保留状态的订单)和 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});
})

关于javascript - 按状态获取订单 Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47947785/

相关文章:

javascript - Java/Firebase 脚本执行多次

Javascript降低输入预览图像的分辨率

javascript - 为什么多次调用 setState() 时状态不能正确更新

java - 如何处理 android 应用程序中与 firebase 的连接超过 100 个?

reactjs - 如何将父状态传递给其子组件?

reactjs - 使用react-router-v4验证异步

javascript - React 中的 Firebase 查询 - 我可以登录到控制台,但不能在组件中使用

javascript - 单例模式的异步数据

javascript - 引用另一个 .html 文件中的标签

javascript - 服务器控件中 JavaScript 函数的范围