node.js - Express.js & Mongoose - 检查请求值是否在日期之间
问题描述
我正在尝试使用 Mongoose 制作 Express.js API。下面是在请求参数中接收日期并确定有关工作日的一些信息的路由代码。服务器应检查接收日期是否在数据库中保存的两个日期之间 (validFrom
和validUntil
)。我尝试在下面的代码中设置两个条件,但是使用测试值时不返回时间表。我测试了 API date
2020-09-02
,validFrom
value 是2020-08-31
,validUntil 是2020-09-05
。
router.get("/:date", async (req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({ errors: errors.array() });
}
try {
const date = new Date(req.params.date);
const week = getWeek(date) % 2 === 0 ? "parni" : "neparni"; // even or odd week
const day = format(date, "eeee", { locale, weekStartsOn: 2 });
let schedule = await Schedule.findOne({
week: week,
day: day,
validFrom: {
$lte: date.getDate(), // conditions
},
validUntil: {
$gte: date.getDate(),
},
});
if (!schedule) return res.json({ msg: "Not Found" });
res.json(schedule);
} catch (err) {
console.error(err.message);
res.status(500).send("Server error");
}
});
有没有人有类似的比较数据库日期的案例?
解决方案
您的函数调用 date.getDate() 仅返回日期,因此不匹配。您应该能够只传递日期对象,但这取决于您如何在 mongo 中设置日期属性
推荐阅读
- node.js - 无法接收快速代码的响应在控制台中显示未定义
- v8 - V8字节码中“ToBooleanLogicalNot”是什么意思?
- r - if (s2 < 0) s2 <- 0 中的错误:需要 TRUE/FALSE 的缺失值
- spring-boot - 如何将redis中一个namespace的key均匀分布到多个shard?
- xamarin - 在 Xamarin 表单中的屏幕截图上应用水印
- javascript - 在没有nodejs的js中制作视频聊天应用
- gstreamer - glimagesink render-rectangle 无法在代码中设置
- c++ - 如何从 curl 多句柄 c++ libcurl 返回响应
- python - 如何将 QListWidget setText 位置更改为顶部?
- c++ - 在可变参数类模板中调用可变参数成员函数模板时,gcc 和 clang 的行为不同