按日期过滤
作者: KingKnecht创建于 2022年10月16日更新于 2025年6月3日
我正在尝试使用 $gt 过滤日期。这是我在客户端的 axios 方法中为精确日期提供的内容(此操作可行):
params: {
sortBy: 'name:asc',
limit: 200,
page: 1,
servedAt: `${format((new Date()),"yyyy-MM-dd'T'HH:mm:ss'Z'")}`,
},但是如果我尝试在其中添加更多逻辑,则会出现错误:
params: {
sortBy: 'name:asc',
limit: 200,
page: 1,
servedAt: `{$gt: ${format((new Date()),"yyyy-MM-dd'T'HH:mm:ss'Z'")} }` // <=== 无效转换
},服务器端的代码如下:
const getPlannedDishs = catchAsync(async (req, res) => {
const filter = pick(req.query, ['servedAt']);
const options = pick(req.query, ['sortBy', 'limit', 'page']);
const result = await dishService.queryPlannedDishs(filter, options);
res.send(result);
});
错误消息为:
message: Cast to date failed for value "{$gt: 2022-10-13T00:00:00Z }" (type string) at path "servedAt" for model "PlannedDish"
at model.Query.exec (C:\Users\KingKnecht\source\repos\Mampf-KO\backend\node_modules\mongoose\lib\query.js:4498:21)
at Function.schema.statics.paginate (C:\Users\KingKnecht\source\repos\Mampf-KO\backend\src\models\plugins\paginate.plugin.js:39:54)如何实现过滤?谢谢
内容来源: hagopj13/node-express-boilerplate