firebase - 在 Firestore 中,如何查询具有数字范围的项目的数字范围
问题描述
我试图在 Firestore 中找出查询一周日期数据的最佳方法。我有跨越多天的对象,我想知道哪些元素是特定时间跨度的一部分。现在我的数据有一个开始和结束日期,由它们的 unix ms 值表示。有些在查询开始日期之前开始,有些在查询结束日期之后结束。我如何正确查询或正确非规范化数据。
例如,我想检索本月 10 月发生的所有项目。有些元素的开始日期可能是 9 月 30 日 - 10 月 2 日,有些可能是 10 月 31 日 - 11 月 2 日。我如何构建/查询我的数据以包含那些边缘情况?
{
active: true,
address: {
addressLine1: "5 May Way",
city: "Wilmington",
state: "Ny",
zip: "40778"
},
createdOn: 1570558984758,
day: 1570507200000,
event: {
startDate: 1570558945155,
endDate: 1570559945160,
utcOffset: -240
},
id: "6FXSCc8BFqww59PT0HyE",
name: "Test",
portalId: "iHvdmHxsQsQvoaQIO0r4",
statusId: 0,
}
解决方案
从我的脑海中,您可能会包含一个字段,表示事件发生的月份(例如occurrence
)。该字段将是一个数组,您可以查询该事件是否发生在特定月份,您可以使用一个where
子句,该字段将包含您要查找的月份。类似的东西where('occurrence', 'array-contains', 'October')
。
也就是说,您可以将event
数组添加到您的字段中occurrence
,它看起来像这样:
event: {
startDate: xxxxxxxxx,
endDate: xxxxxxxxx,
utcOffset: xxx,
ocurrence: [September, October]
}
这将处理常规和边缘情况。
推荐阅读
- reactjs - FilledInput 在哪里继承 Mui 中的 backgroundColor 属性?
- python - 无法将 csv 文件导入 jupyter notebook
- node.js - 错误:找不到模块“硒硒”
- angular - 如何查看 Angular 2+ 中的运行错误?
- c# - 如何在 Movilizer 日历屏幕中仅启用月份和年份?
- android - 如何在 Android 上更改阴影高度颜色?
- regex - 用于在引号之间捕获的正则表达式,包括跳过的引号
- c# - 我的 Unity 面板不是我想要的颜色
- javascript - 我想动态导入图像,但我运行项目我没有看到图像
- google-sheets - 我们可以使用谷歌表单脚本验证来自谷歌表单的响应是否存在输入的值?