这周我已经把自己累坏了!我未能修复一个应该用一些基础数学来解决的错误。
我的 mongodb 数据库中有一些“事件”对象,它们是使用日期字段创建的,在预保存 Hook 中,我计算年份数字并将其放置到模型上。例如。
1 月 1 日 = 1
1 月 5 日 = 5
12 月 31 日 = 365
我的应用程序的用户可以搜索当前日期之前 X 天的事件。我的查询是这样的:
{
day_number: { $gte: start_day, $lte: end_day}
}
现在已经到了年底了,有一个逻辑错误。
假设输入为 12 月 22 日至 1 月 2 日
我的查询正在进行:
{
day_number: { $gte: 356, $lte: 2}
}
这当然不会返回任何结果,因为没有数字大于或等于 356 且小于或等于 2。
对于修复此问题有什么建议,而不涉及破坏虽然损坏但简单的查询吗?
最佳答案
您可以测试结束日期是否小于开始日期,然后调整结束日期,如下所示:
var start_day;
var end_day;
var numDaysInbetween = 0;
var day_number = {}
/* test 1 */
start_day = 50;
end_day = 55;
/* test 2 */
start_day = 356;
end_day = 2;
if (start_day > end_day) {
end_day += 365;
}
day_number = { $gte: start_day, $lte: end_day };
alert(day_number.$lte - day_number.$gte);
关于javascript - 搜索时间戳大于X天的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41291072/