【问题标题】:firebase realtime database filter data by date range [duplicate]firebase实时数据库按日期范围过滤数据[重复]
【发布时间】:2018-09-29 04:15:32
【问题描述】:

我们正在使用 firebase 实时数据库并拥有订单数据。日期存储为字符串值,我们希望查询最近一周的订单。数据看起来像

"orders" : {
  "-LM_h6nKUKQY0wyqSCz4" : {
    "order" : {
      "_couponDiscount" : "382.5",
      "_date" : "17-9-2018",
      "_orderNumber" : "MannuSharma-21581",
      "_orderStatus" : "Delivered",
      "_orderTotal" : 450,
    }
  },
  "-LMatbq6prD4kNtTqzmx" : {
    "order" : {
      "_date" : "19-9-2018",
      "_orderNumber" : "AnkushVerma-22991",
      "_orderStatus" : "Delivered",
      "_orderTotal" : 600,
    }
  },
  "-LMaxcGocVxe9nnfFnT2" : {
    "order" : {
      "_date" : "18-9-2018",
      "_orderNumber" : "MannuSharma-40284",
      "_orderStatus" : "Delivered",
      "_orderTotal" : 450,
    }
  }

_date 是字段,在这种情况下,假设我需要获取日期 17 和 18 的数据。

startAt 和 endAt 似乎会按字典顺序执行,那么我如何将这些数据视为日期?

【问题讨论】:

  • 查询过去 6 个月的数据是否明智?我们正在查看它以按天、周、月等生成销售图表。
  • 您会很快发现 Firebase(以及大多数其他 NoSQL 数据库)的查询功能对于此类用例非常有限。更常见的是对报告中的所有数据进行汇总。所以:当你写一个订单时,还要更新订单所属的周、月等的总计。以这种方式显示报告非常简单。

标签: firebase firebase-realtime-database


【解决方案1】:

如果您想按字典顺序对日期进行排序,以便从 startAt 到 endAt 进行查询,则应将它们存储为 YYYY-MM-DD 而不是 DD-MM-YYYY。

请注意,将 19-9-2018 更改为 2018-9-19 将不起作用,您必须将其存储为 2018-09-19。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-02
    • 2014-10-20
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    相关资源
    最近更新 更多